Bonjour tous le monde,
Je souhaite savoir si les variables statiques sont hérité par les classes files d'une classe mère?
Merci de me donné un exemple concret.
Bonjour tous le monde,
Je souhaite savoir si les variables statiques sont hérité par les classes files d'une classe mère?
Merci de me donné un exemple concret.
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Et question alors tant qu'à dire des bêtises. Si je fais la manipulation suivante :
Quel sera la valeur de mon System.out ?
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 public class A { public static String message = "Bonjour !"; } public class B extends A { public static void main(String[] args) { message = "toto"; new C(); } } public class C { public C() { System.out.println(A.message); } }
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Voila un exemple qui ressemble un peu à ce que j'ai rencontrer dans un QCM :
j'attend la réponse à la question de Robin56
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 public class A{ static int i = 1; show(){ syso("la valeur de i"+ i); } } } public class B extends A{ int i=1; show(){ syso("la valeur de i"+ i); } } main(String args[]){ A a = new B(); a.show(); }
Merci de votre aide.![]()
La situation est différente.
Ici la classe B, qui hérite de A, hérite bel et bien de la variable i de la classe A.
Seulement, B définit sa propre variable i, de même nom. Puisqu'elle a le même nom, elle masque la variable i de la classe A.
Le contexte de B ne lui permet donc plus d'accéder à la variable i de la classe A. Seulement à sa propre variable i. Pour accéder à celle de la classe A, elle va devoir faire comme le reste du monde :
En l'occurrence, sa méthode show() n'accède qu'à une variable i, donc dans son contexte, donc celle de B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part A.i
Par bonne foi, je réponds sans essayer de lancer l'exemple : cela affichera "toto" (sans les guillemets.)Quel sera la valeur de mon System.out ?
La variable message, variable statique de la classe A, est bel et bien héritée par la classe B. Ce qui signifie que cette variable fait partie du contexte de B, hérité du contexte de A, et donc que B peut lire et écrire dans cette variable qui est à A.
Donc la ligne suivante compile et modifie la variable en question :
S'il n'y avait pas héritage, elle ne compilerait pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part message = "toto";
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Oui, et les variables non-statiques aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class A { protected static final String MESSAGE = "Bonjour !"; } public class B extends A { public static void main(String[] args) { // variable MESSAGE visible, donc héritée. System.out.println(MESSAGE); } }
Partager