En forelesningsbit med en mentor som en del av Codegym University-kurset. Meld deg på hele kurset.


"Nå er det på høy tid at jeg forteller deg om konstruktører. Dette er et veldig enkelt konsept. Programmerere har oppfunnet en kortfattet måte å lage og initialisere objekter på. "

Uten konstruktør Med en konstruktør
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize( MyFile file, "a.txt");
String text = file2.readText();
MyFile file = new MyFile("c:\data\a.txt");


MyFile file2 = new MyFile(file, "a.txt");
String text = file2.readText();

"Jeg har nettopp lært meg om initialiseringsmetoden ..."

"Se hardere ut. Med konstruktører er koden mer praktisk og kompakt."

"Så det er. Her er et spørsmål. Jeg vet hvordan man skriver en initialiseringsmetode i en klasse, men hvordan skriver jeg en konstruktør?"

"Først, se på dette eksemplet:"

Uten konstruktør Med en konstruktør
class MyFile
{
  private String filename = null;

  public void initialize(String name)
  {
    this.filename = name;
  }

  public void initialize(String folder, String name)
  {
    this.filename = folder + name;
  }

  public void initialize(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }

…
}
class MyFile
{
  private String filename = null;

  public MyFile(String name)
  {
    this.filename = name;
  }

  public MyFile(String folder, String name)
  {
    this.filename = folder + name;
  }

  public MyFile(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }

…
}

"Det er lett å erklære en konstruktør i en klasse. En konstruktør ligner på initialiseringsmetoden , med bare to forskjeller:

1. Navnet på en konstruktør er det samme som klassenavnet (i stedet for initialisering).

2. En konstruktør har ingen type (ingen type er angitt)."

"OK, så det er som å initialisere , men med noen få forskjeller. Jeg tror jeg skjønner det."