Maison >Java >javaDidacticiel >Comment maîtriser le remplacement de méthode en Java
Une fois qu'une sous-classe hérite d'une classe parent, elle peut écrire une méthode avec le même nom et les mêmes paramètres que la classe parent dans la sous-classe, remplaçant ainsi la méthode avec le même nom et les mêmes paramètres. dans la classe parent. Nous le ferons Le processus est appelé méthode override
2.1 Lorsque la méthode de la classe parent ne peut pas répondre aux besoins de la sous-classe, la méthode doit être réécrite dans la sous-classe
. 2.2 Question et analyse
Par exemple, il existe une classe parent Peple et une sous-classe chinoise. Il existe une méthode say() dans la classe parent qui fait que les gens parlent. Cependant, lorsque je veux que la sous-classe soit appelée, elle génère du chinois. les gens parlent. Évidemment, il n'est pas possible d'appeler la méthode directement, vous devez donc réécrire la méthode say dans la sous-classe
2.3 Exemple de code
Classe People
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void say(){ System.out.println("人在说话"); } }
Classe chinoise
public class Chinese extends Peple{ public Chinese() { } @Override public void say() { System.out.println("中国人在说话"); } }
Classe Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); //当进行方法重写时,调用的是子类的say()方法 } }
2.4 Exemple de code capture d'écran en cours d'exécution
@Override 权限修饰符 返回值类型 方法名(形参列表){ //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void }
3.2.1 Les droits d'accès des méthodes remplacées par les sous-classes doivent être supérieurs ou égaux à droits d'accès des méthodes de classe parent
a Exemple de code
Classe People
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } //没有写访问权限的话,默认是default访问权限 void say(){ System.out.println("人在说话"); } }
Classe chinoise
public class Chinese extends Peple{ public Chinese(){ } //父类say方法的访问权限为default,子类say方法的访问权限为public, // 符合子类方法访问权限大于等于父类方法访问权限的要求 @Override public void say() { System.out.println("中国人在说话"); } }
Classe Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); } }
b Exemple de code exécutant une capture d'écran
Si le type de valeur de retour de la méthode de classe parent est un type de données de base, puis la valeur de retour de la méthode remplacée par la sous-classe. Le type de valeur doit également être le type de données de base correspondant
a Exemple de code
Classe de personnes
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public double add(int a,int b){ return a+b; } }
Classe chinoise
public class Chinese extends Peple{ public Chinese(){ } @Override public double add(int a,int b) { return a+b+1; } }
Classe Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); System.out.println("求和之和再加上1的结果为: "+c.add(2, 3)); } }
b Exemple capture d'écran du code en cours d'exécution
3.2.3 Lorsque la méthode de la classe parent Lorsque le type de valeur de retour est nul, le type de valeur de retour de la méthode remplacée par la sous-classe est également void
a Exemple de code
Classe People
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void eat(){ System.out.println("人的主食一般是熟食"); } }
Classe chinoise
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Classe Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Exemple de code exécutant une capture d'écran
3.2.4 Lorsque la méthode de la classe parent est modifiée statiquement, la sous-classe ne peut pas remplacer la méthode
a Exemple de code d'erreur
Classe People
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public static void eat(){ System.out.println("人的主食一般是熟食"); } }
Classe chinoise
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Classe Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Exemple de capture d'écran du code en cours d'exécution
Le message d'erreur donné par idea lors de la compilation
Le message d'erreur donné après l'exécution forcée
3.3.1 Copie de la méthode
Étapes
1. Copiez d'abord directement (Ctrl+C) la méthode dans la classe parent qui doit être remplacée par la sous-classe
2. dans la sous-classe
3. Modifiez les fonctions de la sous-classe pour plus de commodité. Réalisez les exigences que la classe parent ne peut pas réaliser
Les captures d'écran des opérations montrent
3.3.2 Méthode d'invite du compilateur
Étapes
1. Tout d'abord, écrivez un symbole @ en anglais
2. Sélectionnez les méthodes de remplacement/implémentation dans l'invite...
3 Double-cliquez et une fenêtre contextuelle de la liste de sélection des méthodes de remplacement apparaîtra
4. méthode correspondante qui doit être réécrite selon l'invite
5. Cliquez sur Après avoir cliqué sur le bouton ok, une méthode remplacée par la méthode que vous avez sélectionnée sera générée dans la sous-classe
6. Supprimez la première ligne générée automatiquement dans la méthode remplacée générée. méthode, puis écrivez les instructions appropriées dans le corps de la méthode en fonction des exigences. où la méthode remplacée doit être générée
2. Appuyez en même temps sur la touche Alt du clavier et sur la touche Insérer,
3 Dans la boîte contextuelle, sélectionnez Remplacer les méthodes
4. L'interface apparaîtra. Dans l'interface, sélectionnez la méthode qui doit être remplacée par la sous-classe5 Après avoir cliqué sur le bouton OK, la méthode de réécriture requise
6 supprimez la première ligne générée automatiquement dans la méthode de réécriture, et puis écrivez l'instruction appropriée dans le corps de la méthode
Capture d'écran de l'opération montrantCe 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!