方法重写/覆盖
方法重写/覆盖
基本介绍
简单来说:方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法。
注意事项和使用细节
方法重写也叫方法覆盖,需要满足下面的条件
- 子类的方法的形参列表,方法名称,要和父类的方法参数,方法名称完全一样。
- 子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类。 比如,父类的返回类型是Object,子类的返回类型就是String
- 子类方法不能缩小父类方法的访问权限
运行示例:
public class OverrideExercise {
    public static void main(String[] args) {
        Person person = new Person("ming", 23);
        System.out.println(person.Say());
        Student student = new Student("hong", 16, 1, 120);
        System.out.println(student.Say());
    }
}
class Person {
    private String name;
    private int age;
    public Person() {
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String Say() {
        return "my name is " + name + " i'm " + age + " years old" + "\n";
    }
}
class Student extends Person {
    private int id;
    private int score;
    public Student() {
    }
    public Student(String name, int age, int id, int score) {
        super(name, age);
        this.id = id;
        this.score = score;
    }
    public String Say() {  //这里体现super的好处,代码复用
        return super.Say() + "my id is " + id + " my score is " + score + "\n";
    }
}
运行示例:
my name is ming i'm 23 years old
my name is hong i'm 16 years old
my id is 1 my score is 120

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号