Connaissance de base de Java | Héritage et remplacement de méthodes

Continuez à créer et accélérez la croissance ! C'est mon 16ème jour de participation au "Nuggets Daily New Plan·October Update Challenge", cliquez pour voir les détails de l'événement

Héritage, remplacement et chargement de méthodes

Héritage de méthode

Généralement, les sous-classes peuvent hériter de certaines méthodes définies par la classe parent. S'il existe des méthodes dans la sous-classe portant le même nom que la classe parent, super doit être ajouté avant d'appeler ces méthodes dans la sous-classe. De plus, s'il n'y a pas de méthode du même nom dans la sous-classe, vous pouvez appeler directement la méthode de la classe parent dans la sous-classe - il n'est pas nécessaire d'utiliser super. - Exemple de code :

```java //Trois méthodes sont définies dans la classe publique de la classe parent FatherClass{

public void fun1(){ System.out.println("Je suis la méthode de classe parent 1"); } } public void fun2(){ System.out.println("Je suis la méthode de classe parent 2"); } } public void fun3(){ System.out.println("Je suis la méthode de classe parent 3"); } } 定义子类SonClass并继承FatherClass java //Func1() hérité, func2(), func3() redéfini, func4(), func5(). public class SonClass extends Fathers{ public void func2(){ super.func2(); System.out.print("Subclass, func2()"); } public void fun4(){ super.func1(); func2() ; System .out.println("Sous-classe, func4()"); } public void func5(){ System.out.println("Sous-classe : func5()"); }

} ```

remplacement de méthode

Si une méthode est définie dans une sous-classe et que son nom, son type de retour et sa liste de paramètres correspondent exactement au nom, au type de retour et à la liste de paramètres d'une méthode dans la classe parent, alors on peut dire que la méthode de la sous-classe remplace le méthode de la classe parent. .

Conditions permettant aux sous-classes de remplacer les méthodes de la classe parent

  • Le nom de la méthode, le type de retour et la liste des paramètres de la sous-classe doivent être cohérents
  • Les méthodes de sous-classe ne peuvent pas réduire les autorisations d'accès des méthodes de classe parent
  • Les méthodes de sous-classe ne peuvent pas générer plus d'exceptions que les méthodes de classe parent
  • La couverture des méthodes n'existe qu'entre les sous-classes et les classes parentes, et la même classe ne peut être surchargée.
  • La machine virtuelle statique Java lie les méthodes statiques à la classe à laquelle elle appartient et lie les méthodes d'instance à l'instance à laquelle elle appartient.
  • Les méthodes statiques de la classe parent ne peuvent pas être remplacées par des sous-classes et devenir des méthodes non statiques.
  • Une sous-classe peut définir une méthode statique portant le même nom que la méthode statique de la classe parent pour masquer la méthode statique de la classe parent dans la sous-classe.
  • Les méthodes privées de la classe parent ne peuvent pas être remplacées par les sous-classes
  • La méthode abstraite de la classe parent peut être remplacée par la sous-classe de deux manières :
  • Les méthodes non abstraites des classes parents peuvent être remplacées en tant que méthodes abstraites

Remarque : Lorsqu'une sous-classe remplace une méthode de classe parent, si la méthode de sous-classe ou l'objet de sous-classe appelle la méthode, la méthode appelée est généralement considérée comme la méthode de sous-classe. Et si vous souhaitez appeler la méthode du même nom de la classe parent, vous devez ajouter super dans la sous-classe. ```java public class PaClass{ //Définir trois méthodes public void funcA(){ System.out.println("Classe parent : A run"); } public void funcB(){ System.out.println("Classe parent : B run"); funcA();//Appeler une méthode System.out.println("Classe parent : B end"); } public void funcC(){ System.out.println("Classe parent : C run " ); System.out.println("Classe parent : C se termine"); } } //Classe SuClass public void SuClass étend PaClass{ public void funcA(){ System.out.println("Sous-classe : A s'exécute") ; System .out.println("Sous-classe : A se termine"); } public void funcB(){ System.out.println("Sous-classe : B s'exécute"); super.funcB();//Appelle la méthode funcB() de la classe parent System.out.println("Sous-classe : Fin de B"); }

public void funcC(){ System.out.println("Sous-classe : C s'exécute"); funcA(); //Appelle la méthode de la sous-classe System.out.println("Sous-classe, C se termine")

} } ``` Dans la classe SuClass, les méthodes funcA()\funcB()\funcC() sont définies, couvrant les trois méthodes définies par la classe parent. Dans la méthode funcB() de la classe SuClass, la méthode funcB de la classe parent est appelée via le super modificateur. Super n'est pas utilisé dans la méthode funC, donc la méthode funcA de sa propre classe est appelée.

Guess you like

Origin blog.csdn.net/y943711797/article/details/132972184