1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
public class A {
public B(int i){
//....
}
}
public class B extends A {
// Pas de constructeur explicite pour B, le compilateur
// crée un constructeur par défaut, qui appelle le constructeur
// sans argument de A. A n'a pas de constructeur sans argument
// -> erreur!
}
public class C extends A {
float a;
public C(float a){
this.a=a;
// Pas d'appel explicite au constructeur du parent
// java suppose alors un appel au constructeur sans argument
// ce constructeur n'existe pas dans le parent
// -> erreur!
}
}
public class D extends A {
float a;
public D(float a){
super(69);
this.a=a;
// Appel explicite au constructeur A(int) du parent
// java ne génère alors aucun appel implicite
// -> ok!
}
public D(){
// ajouté pour démontrer E ;)
this(3.14159f);
// appel au constucteur D(float) avec un paramètre
// on peut chainer ainsi les constructeurs
// -> ok
}
}
public class E extends D {
// aucun constructeur explicit, java
// va générer un constructeur par défaut
// qui utilisera le constructeur sans
// argument du parent ( D ) via super();
// -> ok
} |
Partager