Home  >  Article  >  Complete mastery of method overriding in Java

Complete mastery of method overriding in Java

WBOY
WBOYforward
2022-07-29 15:22:451689browse

This article brings you relevant knowledge about java. After the subclass inherits the parent class, you can write a method in the subclass with the same name and the same parameters as the parent class, so as to realize the function of the parent class. We call the overwriting of methods with the same name and parameters in a class called method rewriting. Let’s take a look at it together. I hope it will be helpful to everyone.

Complete mastery of method overriding in Java

Recommended study: "java video tutorial"

1. Meaning

After a subclass inherits a parent class , you can write a method in the subclass with the same name and the same parameters as the parent class, thereby overriding the method with the same name and the same parameters in the parent class. We call this process override of the method

2. Why use method overriding

2.1 When the method of the parent class cannot meet the needs of the subclass, the method needs to be rewritten in the subclass

2.2 Question and analysis

For example, there is a parent class Peple and a subclass Chinese. There is a say() method in the parent class that outputs people talking. However, when I want the subclass to call it, it outputs Chinese people talking. It is very difficult. Obviously calling the method directly is not possible, so you need to rewrite the say method in the subclass

2.3 Sample code

People class

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("人在说话");
    }

}

Chinese class

public class Chinese extends Peple{
    public Chinese() {
    }
    @Override
    public void say() {
        System.out.println("中国人在说话");
    }
}

Test03 Class

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.say();
        //当进行方法重写时,调用的是子类的say()方法
    }
}

2.4 Sample code running screenshot

3. How to use method overriding

3.1 Basic Syntax

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

3.2 Specific analysis

3.2.1 The access permissions of methods overridden by subclasses should be greater than or equal to the access permissions of parent class methods

a Sample code

People class

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("人在说话");
    }

}

Chinese class

public class Chinese extends Peple{
    public Chinese(){
    }
    //父类say方法的访问权限为default,子类say方法的访问权限为public,
    // 符合子类方法访问权限大于等于父类方法访问权限的要求
    @Override
    public void say() {
        System.out.println("中国人在说话");
    }
}

Test03 class

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.say();
    }
}

b Sample code running screenshot

3.2.2 When the return value type of the parent class method is a basic data type, the return value type of the method overridden by the subclass is also the corresponding basic data type

a Sample code

People class

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

}

Chinese class

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 Sample code running screenshot

3.2.3 When the return value type of the parent class method is void, the return value type of the method overridden by the subclass is also void

a Sample code

People class

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("人的主食一般是熟食");
    }

}

Chinese class

public class Chinese extends Peple{
    public Chinese(){
    }
    @Override
    public void eat() {
        System.out.println("中国人的主食是大米或者小麦");
    }
}

Test03 class

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.eat();
    }
}

b Sample code running screenshot

3.2.4 When the parent When a class method is statically modified, subclasses cannot override the method

a Error example code

People class

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("人的主食一般是熟食");
    }

}

Chinese class

public class Chinese extends Peple{
    public Chinese(){
    }
    @Override
    public void eat() {
        System.out.println("中国人的主食是大米或者小麦");
    }
}

Test03 Class

public class Test03 {
    public static void main(String[] args) {
        Chinese c=new Chinese();
        c.eat();
    }
}

b Sample code running screenshot

Error message given by idea when compiling

Given after forced running Error message

3.3 Some tips on method rewriting

3.3.1 Copying method

steps

1. First directly copy (Ctrl C) the method in the parent class that needs to be overridden by the subclass

2. Paste (Ctrl V) into the subclass

3 .Modify the functions in the subclass to facilitate the realization of requirements that cannot be achieved by the parent class

Operation screenshot display

#3.3 .2 Compiler prompt method

Steps

1. First, write an English @ symbol

in the subclass body, not within the method. 2. Select the prompt Overide/implement methods in...

3. Double-click to pop up an override method selection list pop-up window

4. Select the corresponding method that needs to be overridden according to the prompts

5. After clicking the OK button, an overridden method of the method you selected will be generated in the subclass

6. Remove the automatically generated first line in the generated overridden method, and then add it to the method body according to your needs Write the appropriate statement

Operation screenshot display

##3.3.3 Shortcut key method

Steps

1. Move the mouse to the location where the overridden method should be generated

2. Press the Alt key and Insert key on the keyboard at the same time,

3. In the pop-up box, select Override Methods

4. After double-clicking, an interface will pop up. In the interface, select the method that needs to be overridden by the subclass

5. Click the OK button The required rewrite method will be generated later

6. Remove the automatically generated first line in the rewrite method, and then write the appropriate statement in its method body

Operation screenshot display

# Recommended learning: "

java video tutorial

The above is the detailed content of Complete mastery of method overriding in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete