Maison  >  Article  >  Maîtrise complète du remplacement de méthode en Java

Maîtrise complète du remplacement de méthode en Java

WBOY
WBOYavant
2022-07-29 15:22:451709parcourir

Cet article vous apporte des connaissances pertinentes sur java Une fois que la sous-classe a hérité de la classe parent, vous pouvez écrire une méthode dans la sous-classe avec le même nom et les mêmes paramètres que la classe parent, afin de réaliser la méthode de celle-ci. nom et les mêmes paramètres dans la classe parent. Écrasement de méthode, nous appelons ce processus réécriture de méthodes, jetons-y un coup d'œil, j'espère que cela sera utile à tout le monde.

Maîtrise complète du remplacement de méthode en Java

Étude recommandée : "Tutoriel vidéo Java"

1. Signification

Après qu'une sous-classe hérite d'une classe parent, vous pouvez écrire une méthode dans la sous-classe avec le même nom et les mêmes paramètres que la classe parent, donc quant à implémenter la classe parent Pour remplacer les méthodes avec le même nom et les mêmes paramètres, nous appelons ce processus override

2 Pourquoi utiliser le remplacement de méthode 2.1 Lorsque la méthode de la classe parent ne peut pas répondre aux besoins de la sous-classe ? Réécrivez cette méthode dans la sous-classe

2.2 Question et analyse

Par exemple, il y a une classe parent Peple et une sous-classe chinoise. Il y a une méthode say() dans la classe parent, qui fait sortir la personne qui parle, mais quand je veux. Lors de l'appel de la sous-classe, la sortie est en chinois. Évidemment, appeler la méthode directement ne fonctionne pas, donc la méthode say doit être réécrite 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 en cours d'exécution capture d'écran

3. Comment utiliser la substitution de méthode

3.1 Syntaxe de base

@Override
权限修饰符 返回值类型 方法名(形参列表){
    //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private
    //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void
  
}

3.2 Analyse détaillée

3.2.1 Autorisations d'accès pour les méthodes remplacées par la sous-classe es Ça devrait être supérieur ou égal à l'autorisation d'accès de la méthode 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

3.2.2 Lorsque le La méthode de la classe parent renvoie Lorsque le type de valeur est un type de données de base, le type de valeur de retour de la méthode remplacée par la sous-classe est également le type de données de base correspondant

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 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;
    }
}

Test03 class

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        System.out.println("求和之和再加上1的结果为: "+c.add(2, 3));
    }
}

b Exemple de code Capture d'écran en cours d'exécution

3.2.3 Lorsque le type de valeur de retour de la méthode de classe parent 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 par statique, 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 code en cours d'exécution capture d'écran

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 Méthode Re- Quelques conseils pour l'écriture

3.3.1 Copier 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. Collez (Ctrl+V) dans la sous-classe

3. Modifiez les fonctions de la sous-classe pour faciliter la réalisation des exigences qui ne peuvent pas être satisfaites par la classe parent

Captures d'écran d'opération montrant

3.3. .2 Méthode d'invite du compilateur

Étapes

1. Tout d'abord, dans le corps de la sous-classe, écrivez un symbole @ anglais dans une position non-méthode

2. Sélectionnez Remplacer/implémenter les méthodes dans l'invite...

3. cliquez et une fenêtre contextuelle de liste de sélection de méthode de remplacement apparaîtra

4. Sélectionnez la méthode correspondante qui doit être réécrite en fonction des invites

5. Après avoir cliqué sur le bouton OK, une méthode de remplacement de la méthode que vous avez sélectionnée apparaîtra. être généré dans la sous-classe

6. Supprimez la première ligne générée automatiquement dans la méthode de substitution générée, puis écrivez les instructions appropriées dans le corps de la méthode en fonction des exigences

Les captures d'écran de l'opération montrent

3.3.3 Méthode des touches de raccourci

Étapes

1. Déplacez la souris vers la méthode réécrite devrait La position générée

2. Appuyez simultanément sur la touche Alt et la touche Inser du clavier,

.

3. Dans la boîte contextuelle, sélectionnez Remplacer les méthodes

4. Après avoir double-cliqué, une interface apparaîtra dans l'interface, sélectionnez la méthode qui doit être remplacée par la sous-classe

5. Bouton OK, la méthode de remplacement requise sera générée

6. Supprimez la première ligne générée automatiquement dans la méthode remplacée, puis écrivez l'instruction appropriée dans le corps de la méthode

Capture d'écran de l'opération montrant

Apprentissage recommandé : "Tutoriel vidéo Java

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer