« Maintenant, il est vraiment temps que je te parle des constructeurs. C'est un concept très simple. Les programmeurs ont inventé un moyen rapide de créer et initialiser des objets. »

Sans constructeur Avec un constructeur
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();

« Je viens de terminer l'apprentissage de la méthode initialiser... »

« Regarde mieux. Avec les constructeurs, le code est plus pratique et compact. »

« C'est vrai. J'ai une question. Je sais comment écrire une méthode initialiser dans une classe, mais comment puis-je écrire un constructeur ? »

« D'abord, regarde cet exemple : »

Sans constructeur Avec un constructeur
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;
  }

…
}

« Il est facile de déclarer un constructeur dans une classe. Un constructeur est similaire à la méthode initialiser, à deux différences près :

1. Le nom d'un constructeur est le même que le nom de la classe (au lieu d'initialiser).

2. Un constructeur n'a pas de type (aucun type n'est indiqué). »

« OK, donc c'est comme initialiser, mais avec quelques différences. Je crois que j'ai compris. »