Héritage et constructeurs
Bonjour.
J'ai une classe City :
Code:
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
|
package com.OCR.classes1;
public class City {
protected String name;
protected String country;
protected int inhabitants;
protected static int nb = 0;
public City() { nb++; }
public City(String name, String country, int inhabitants) {
setName(name);
setCountry(country);
setInhabitants(inhabitants);
nb++;
}
public void presentation() {
System.out.println("Nom : " + this.name + "\nPays : " + this.country + "\nHabitants : " + this.inhabitants
+ "\nNombre de villes : " + nb);
}
// Getters & Setters
public String getName() { return this.name; }
public String getCountry() { return this.country; }
public int getInhabitants() { return this.inhabitants; }
public void setName(String name) { this.name = name; }
public void setCountry(String country) { this.country = country; }
public void setInhabitants(int inhabitants) { this.inhabitants = inhabitants; }
} |
Et une classe Capital qui hérite de City :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
package com.OCR.classes1;
public class Capital extends City {
public Capital() {
nb++;
}
public Capital(String name, String country, int inhabitants) {
}
} |
Dans mon main, lorsque je fais un
Code:
1 2
|
Capital lyon = new Capital(); |
J'ai ma variable de classe nb, qui vaut 2, je l'ai donc incrémenté 2 fois. Lorsque je fais
Code:
1 2
|
Capital lyon = new Capital("Lyon", "France", 300_000); |
J'ai ma variable de classe nb qui vaut 1, mais les autres attributs valent null et 0.
J'ai donc l'impression que si je ne fais pas appel explicitement à un constructeur dans ma classe fille, lors de l'instanciation de ma classe fille, j'aurai toujours un appel implicite à mon constructeur par défaut. Pourquoi ?
Merci à vous