« 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. »
GO TO FULL VERSION