Je suis en train de préparer ma certification JAVA programmer 1.5 .
Donc, j'achète un bouquin, la référence en la matière.
Seulement je tombe sur un truc qui me semble bizarre. Je cours vérifier sur Eclipse et j'ai un résultat contradictoire avec le livre...
Explication :
Dans le bouquin, je vois :
Ce que je traduirais par : "une instance peut lire et modifier les champs "protected" qu'elle hérite de sa superclasse. Cependant, elle ne peut pas le faire pour ceux des autres instances""An instance may read and write protected fields that it inherits from its superclass. However, the instance may not read or write protected inherited fields of other instances"
Je conclus de cette phrase que ceci ne devrait pas marcher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 package pack1; public class Base { protected int i; }Ici, dans la méthode aMethod, l'instance de Subclasse essaye de modifier le champ protected d'une autre instance (sub) que cette dernière hérite de Base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package pack2; import pack1.Base; public class SubClass extends Base { void aMethod(SubClass sub){ sub.i = 1; } }
D'après l'auteur ce n'est pas permis... Et pourtant.
Il se passe la même chose quand on essaye de modifier un champ privé d'une autre instance dans la classe qui déclare le champ privé, ce qui, toujours d'après le bouquin, n'est pas possible non plus.
Donc voilà, maintenant je suis dans le doute. Faute de l'auteur ? Incompréhension de ma part ?
J'ai toujours pensé avoir l'esprit clair sur ces notions de base de JAVA mais là je ne sais plus quoi penser.
Partager