Un frammento di lezione con un mentore come parte del corso Codegym University. Iscriviti al corso completo.


"Ora è giunto il momento che ti parli dei costruttori. Questo è un concetto davvero semplice. I programmatori hanno inventato un modo abbreviato per creare e inizializzare oggetti. "

Senza un costruttore Con un costruttore
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();

"Ho appena finito di conoscere il metodo di inizializzazione..."

"Guarda meglio. Con i costruttori, il codice è più conveniente e compatto."

"Così è. Ecco una domanda. So come scrivere un metodo di inizializzazione all'interno di una classe, ma come faccio a scrivere un costruttore?"

"Per prima cosa, guarda questo esempio:"

Senza un costruttore Con un costruttore
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;
  }

…
}

"È facile dichiarare un costruttore all'interno di una classe. Un costruttore è simile al metodo initialize , con solo due differenze:

1. Il nome di un costruttore è uguale al nome della classe (invece di initialize).

2. Un costruttore non ha tipo (nessun tipo è indicato)."

"OK, quindi è come initialize , ma con alcune differenze. Penso di aver capito."