一、概念
什么是方法重写,重载(方法名称一样,参数列表不一样),重写(完成做到重写,都一样,实现功能不一样)
- 方法重写是指子类可以根据需要对父类继承来的方法进行改写,是多态机制的前奏
注意点 - 重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值
public void printInfo(){
super.printInfo(); //用super调用父类方法
System.out.println("子类name=" + name); //不写父类的会优先调用子类方法
}
- 重写方法不能比被重写方法有更加严格的访问权限
private void printInfo(){
super.printInfo();
System.out.println("子类name=" + name);
}
- 父类中的私有方法,不能被重写
能写上,但是主函数不能调用,报错
private void printAddr(){
System.out.println("私有方法");
}
- 在子类重写的方法中继续使用父类被重写的方法可以通过super.函数名获取
二、代码演示
class Person{//class 相当于c语言的struct
String name;
private String address;
public void printInfo(){
System.out.println("name=" + name);
}
private void printAddr(){
System.out.println("address=" + address);
}
}
class Student extends Person{
int score;
/*重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值*/
public void printInfo(){
super.printInfo(); //用super调用父类方法
System.out.println("子类name=" + name); //不写父类的会优先调用子类方法
}
/*重写方法不能比被重写方法有更加严格的访问权限*/
// private void printInfo(){
// super.printInfo();
// System.out.println("子类name=" + name);
// }
/*父类中的私有方法,不能被重写*/
// 这里不会报错,但是主函数无法调用(报错)
// private void printAddr(){
// System.out.println("私有方法");
// }
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.name = "xiaowei";
s.printInfo();
}
}
师承上官可编程 —— 陈立臣