bonjour;
je voudrais s'il vous plait savoir si les variables static dans une classe sont hérité dans une sous classe je sais que les méthodes static sont pas hérite mais pour les variables static je sais pas.
merci
bonjour;
je voudrais s'il vous plait savoir si les variables static dans une classe sont hérité dans une sous classe je sais que les méthodes static sont pas hérite mais pour les variables static je sais pas.
merci
Les variables et les méthodes static sont héritées par les sous-classes : elles y ont accès direct (sauf si elles sont private bien sûr).
Je ne sais pas pourquoi tu dis que les variables static ne sont pas héritées.
Il y a une différence entre static et pas-static, oui, et cette différence est la même à l'héritage. Ça ne veut pas dire qu'il n'y a pas d'héritage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class Mere { public static int donnée = 0; } class Fille extends Mere { int doSomething() { // ça compile, ça marche : Fille a donc hérité de donnée. donnée++; return donnée; } }
De la même manière, les méthodes sont héritées 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
15 public class Mere { public static void faireQuelqueChose() { } } class Fille extends Mere { public int doSomethingElse() { // ça compile, ça marche : Fille a donc hérité de faireQuelqueChose(). faireQuelqueChose(); return 0; } }
je te recopie ce que j'ai sur mon cours peut etre que j'ai due mal comprendre
cas des méthodes statiques
-(Cf. remarque début cours aujourd'hui)
-une méthode statique n'est jamais héritée
-mais elle accepte des arguments d'une sous-classe
Bah c'est une question de définition. Qu'est-ce que ça veut dire au juste.
Qu'est-ce que ça veut dire, hériter d'une variable membre ?
Qu'est-ce que ça veut dire, hériter d'une méthode ?
Ça veut dire une chose toute simple : quand une classe fille hérite d'une variable ou d'une méthode d'un type ascendant (classe mère, classe grand-mère, interface implémentée...)
ça signifie que la classe fille a accès à cette variable ou cette méthode, avec la même syntaxe que si elle avait elle-même défini la variable ou la méthode. Elle la "voit" et peut s'en servir de la même manière que sa classe mère.
C'est ce qu'illustrent mes exemples au-dessus.
Selon cette définition, les variables et méthodes sont héritées, qu'elles soient statiques ou pas.
merci thelvin heureusement que j'ai posé la question sinon je serais partie sur de mauvaise base
Petite précision, lorsque l'on dit que les variables statiques ne sont pas héritées, c'est sans doute pour préciser que même si on y a accès, la variable n'est pas héritée dans le sens ou elle reste propre à la classe Mère...
Je m'explique, dans l'exemple ci-dessus, la fille a accès la variable "donnée" qu'elle peut manipuler. Mais si elle manipule cette variable, elle ne manipule pas une variable propre à la fille mais bien celle de la mère... Si une autre classe hérite de la classe Mère et qu'elle manipule également la variable "donnée", il ne faudra pas oublié que cette variable statique est celle de la mère et non des filles (attention aux effets de bord).
Partager