Maison  >  Article  >  Java  >  Remplacement des méthodes en Java

Remplacement des méthodes en Java

巴扎黑
巴扎黑original
2017-04-17 10:45:082138parcourir

En Java et dans certains autres langages de programmation orientés objet avancés, les sous-classes peuvent hériter des méthodes de la classe parent sans réécrire les mêmes méthodes. Mais parfois, la sous-classe ne souhaite pas hériter des méthodes de la classe parent inchangées, mais souhaite apporter certaines modifications, ce qui nécessite une réécriture des méthodes. La réécriture de méthode est également appelée écrasement de méthode. Ce qui suit présentera les règles de réécriture et de réécriture des méthodes Java. Apprenons ensemble

1. Remplacement de méthode (Override)

.

Comment définir la substitution en Java : La fonctionnalité d'héritage d'une classe dans un programme Java peut générer une sous-classe. Lorsque la sous-classe hérite de la classe parent, elle aura les attributs non privés (méthodes et variables) de la classe parent. . Dans Les sous-classes peuvent ajouter leurs propres attributs (méthodes et variables), et elles peuvent également étendre les méthodes de la classe parent pour améliorer leurs propres fonctions. C'est ce qu'on appelle la réécriture, également appelée copie ou remplacement. La soi-disant réécriture de méthode signifie que la méthode de la sous-classe et la méthode héritée de la classe parent ont exactement le même nom de méthode, le même type de valeur de retour, le même nombre de paramètres de méthode et le même type de paramètre. Ce n'est qu'ainsi qu'elle peut être appelée méthode. réécriture.

Réflexion du code :


// 这是父类的定义
public class Person {
  public void eat() {
     System.out.println("=====这是父类Person的eat方法=======");
   }
}
// 这是子类的定义
public class Student extends Person {
  @Override
  public void eat() {
    System.out.println("===这是子类Student的eat方法===");
  }
  // main方法测试
  public static void main(String[] args) {
    Student student = new Student();
    student.eat(); //输出:===这是子类Student的eat方法===
   }
}

Après que la sous-classe réécrit la méthode de la classe parent, lors de l'instanciation de la sous-classe, puis le La méthode de la sous-classe est appelée et la méthode de la classe parent est comme si elle avait été remplacée. Si vous devez appeler une méthode de la classe parent dans la sous-classe, utilisez le mot-clé super dans la méthode de la sous-classe pour appeler la méthode de la classe parent. Le format est : super Le nom de la méthode (liste de paramètres) dans la classe parent.

Règles de réécriture :

Lors de la réécriture de méthodes, vous devez suivre les règles suivantes pour réaliser la réécriture de méthode :

(1) La liste des paramètres de la méthode de sous-classe doit être la même que la liste des paramètres de la méthode remplacée dans la classe parent (nombre de paramètres et types de paramètres), sinon seule une surcharge de méthode peut être obtenue.

(2) Le type de valeur de retour de la méthode de sous-classe doit être le même que le type de valeur de retour de la méthode remplacée dans la classe parent, sinon seule une surcharge de méthode peut être obtenue.

(3) En Java, les droits d'accès d'une méthode de sous-classe ne peuvent pas être inférieurs aux droits d'accès de la méthode surchargée dans la classe parent, et doivent être supérieurs ou égaux aux droits d'accès de la classe parent .

(4) Pendant le processus de réécriture, si la méthode remplacée dans la classe parent lève une exception, la méthode de la sous-classe lèvera également une exception. Cependant, il existe certaines contraintes sur les exceptions levées ---> Les sous-classes ne peuvent pas lever plus d'exceptions que la classe parent, elles ne peuvent lever que des exceptions plus petites que la classe parent, ou elles ne peuvent pas lever d'exceptions. Par exemple : si la méthode de la classe parent renvoie une exception, la sous-classe ne peut lancer que IOException ou une exception plus petite que Exception ou aucune exception.

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