Maison >Java >javaDidacticiel >L'impact des modificateurs d'accès aux fonctions Java et du remplacement des méthodes
Les modificateurs d'accès des méthodes remplacées dans les sous-classes doivent être identiques ou plus larges : les autorisations d'accès des méthodes de sous-classe peuvent être plus larges que celles des méthodes de classe parent (par exemple, passées de protégées à publiques). Les méthodes de sous-classe ne peuvent pas avoir un accès plus restreint que les méthodes de superclasse (par exemple, de public à protégé).
L'impact des modificateurs d'accès aux fonctions Java et du remplacement des méthodes
Les modificateurs d'accès contrôlent l'accessibilité des méthodes Java. Ils sont de quatre types :
Lors du remplacement d'une méthode dans une classe parent, la méthode remplacée dans la classe enfant doit avoir le même modificateur d'accès ou un modificateur d'accès plus large. En effet, la méthode substituée est basée sur la méthode de la classe parent, elle ne peut donc pas être plus restreinte que la méthode de la classe parent.
Cas pratique
Ce qui suit est une classe parent :
public class Parent { protected void show() { System.out.println("Parent class show()"); } }
Maintenant, considérons la sous-classe suivante, qui remplace la méthode show()
dans la classe parent. Notez que le modificateur d'accès de la méthode show()
est modifié de protected
à public
: show()
方法。注意 show()
方法的访问权限修饰符是从 protected
更改为 public
:
public class Child extends Parent { @Override public void show() { System.out.println("Child class show()"); } }
由于父类的 show()
方法是 protected
的,子类的 show()
方法也必须是 protected
或 public
。将其设置为 public
符合方法重写的要求,因为它具有比父类方法更宽的访问权限。
运行这两个类将打印以下输出:
Child class show()
这是因为 Child
类中的重写方法被调用,因为它具有更宽的访问权限(public
rrreee
de la classe parent La méthode show( )
est protected
, et la méthode show()
de la sous-classe doit également être protected
ou public code> >. Le définir sur <code>public
est considéré comme un remplacement de méthode car il a un accès plus large que la méthode de la classe parent. 🎜🎜L'exécution de ces deux classes affichera le résultat suivant : 🎜rrreee🎜Cela est dû au fait que la méthode surchargée dans la classe Child
est appelée car elle a un accès plus large (public
code> ). 🎜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!