Maison >Java >javaDidacticiel >L'impact des modificateurs d'accès aux fonctions Java et du remplacement des méthodes

L'impact des modificateurs d'accès aux fonctions Java et du remplacement des méthodes

王林
王林original
2024-04-26 09:27:01898parcourir

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é).

Java 函数的访问权限修饰符之与方法重写的影响

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 :

  • public : accessible partout
  • protected : accessible au sein du même package et des mêmes sous-classes
  • default (pas de modificateur explicite) : accessible au sein du même package
  • private : accessible uniquement au sein de la classe

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() 方法也必须是 protectedpublic。将其设置为 public 符合方法重写的要求,因为它具有比父类方法更宽的访问权限。

运行这两个类将打印以下输出:

Child class show()

这是因为 Child 类中的重写方法被调用,因为它具有更宽的访问权限(publicrrreee

En raison du 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn