Bonjour.
J'ai une classe City :
Et une classe Capital qui hérite de City :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Dans mon main, lorsque je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) { } }
J'ai ma variable de classe nb, qui vaut 2, je l'ai donc incrémenté 2 fois. Lorsque je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Capital lyon = new Capital();
J'ai ma variable de classe nb qui vaut 1, mais les autres attributs valent null et 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Capital lyon = new Capital("Lyon", "France", 300_000);
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
Partager