Pourquoi super.super.method(); Interdit en Java ?
L'utilisation de super.super.method(); en Java est interdit en raison de problèmes d'encapsulation. L'encapsulation vise à éviter de contourner le comportement de la classe parent.
Bien qu'il soit parfois raisonnable de contourner le comportement de sa propre classe (au sein de la même méthode), il est crucial de ne pas contourner le comportement du parent. Considérez la hiérarchie de classes suivante :
Il est logique de définir ce qui suit méthodes :
Cela garantit que les sous-classes respectent les contraintes imposées par leurs classes parentes.
Cependant, si super.super.add() était autorisé, une sous-classe malveillante de NaughtyCollection pourrait contourner l'exigence d'objet rouge de RedCollection :
Cela briserait l'invariant établi par RedCollection, créant une collection d'éléments qui pourraient ne pas être rouges.
Par conséquent, super.super.method( ) les appels sont interdits en Java pour maintenir l'encapsulation et appliquer les comportements de classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!