Maison  >  Article  >  Java  >  Comment maîtriser le remplacement de méthode en Java

Comment maîtriser le remplacement de méthode en Java

PHPz
PHPzavant
2023-05-25 13:07:16919parcourir

Comment maîtriser le remplacement de méthode en Java

1. Signification

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. Pourquoi utiliser la méthode overriding

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

Comment maîtriser le remplacement de méthode en Java

3. Comment utiliser la substitution de méthode

3.1 Syntaxe de base

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

3.2 Analyse spécifique

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

Comment maîtriser le remplacement de méthode en Java

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

Comment maîtriser le remplacement de méthode en Java

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

Comment maîtriser le remplacement de méthode en Java

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

Comment maîtriser le remplacement de méthode en Java

Le message d'erreur donné après l'exécution forcée

Comment maîtriser le remplacement de méthode en Java

3. 3 Quelques conseils sur la réécriture de méthode

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

Comment maîtriser le remplacement de méthode en Java

Comment maîtriser le remplacement de méthode en Java

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éthodesComment maîtriser le remplacement de méthode en Java

4. L'interface apparaîtra. Dans l'interface, sélectionnez la méthode qui doit être remplacée par la sous-classe

Comment maîtriser le remplacement de méthode en Java5 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éthodeComment maîtriser le remplacement de méthode en Java

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

Comment maîtriser le remplacement de méthode en Java

Comment maîtriser le remplacement de méthode en 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