方法重写
- 当子类和父类的方法一样时,则调用的方法结果是子类方法,也就是说子类重写父类方法**
- @Override注解可以检测我们方法重写时名字是否写对
- 私有方法不能被重写(包括父类私有成员,子类也不能继承)
- 子类方法访问权限不能更低(public>默认>私有)
- java中只支持单继承,不支持多继承(儿子只有一个父亲,不可能有多个父亲)!!
- java支持多层继承(例如:儿子继承父亲,父亲继承爷爷)!!!!
测试类
package Demmon02.JiChu;
//测试类
/*
当子类和父类的方法一样时,则调用的方法结果是子类方法,也就是说子类重写父类方法
@Override注解可以检测我们方法重写时名字是否写对
*/
public class Demon {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
z.method();//因为继承关系,所以子类对象可以调用父类方法
// 匿名类
// new Zi().show();
// new Zi().method();因为继承关系,所以子类对象可以调用父类方法
}
}
父类
package Demmon02.JiChu;
//父类
public class Fu {
public void method(){
System.out.println("Fu中method方法调用");
}
}
子类
package Demmon02.JiChu;
public class Zi extends Fu {
public void show(){
System.out.println("Zi中show方法调用");
}
@Override
public void method(){
System.out.println("Zi中method方法调用");
}//父子方法一样,则子类重写父类方法
}
输出结果:
Zi中show方法调用
Zi中method方法调用
注意事项
以代码的方式讲解
测试类
package Demmon02.JiChu;
//测试类
/*
当子类和父类的方法一样时,则调用的方法结果是子类方法,也就是说子类重写父类方法
*/
public class Demon {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
z.method();//因为继承关系,所以子类对象可以调用父类方法
// 匿名类
// new Zi().show();
// new Zi().method();因为继承关系,所以子类对象可以调用父类方法
}
}
父类
package Demmon02.JiChu;
//父类
public class Fu {
/*
private void method(){
System.out.println("Fu中method方法调用");
}
父类私有方法子类重写不了
*/
void method(){
System.out.println("Fu中method方法调用");
}//可以重写
/*
public void method(){
System.out.println("Fu中method方法调用");
}//可以重写
*/
}
子类
package Demmon02.JiChu;
public class Zi extends Fu {
public void show(){
System.out.println("Zi中show方法调用");
}
void method(){
System.out.println("Zi中method方法调用");
}//父子方法一样,则子类重写父类方法,默认修饰盖雨父类方法权限修饰
/*
public void method(){
System.out.println("Zi中method方法调用");
}//父子方法一样,则子类重写父类方法,public修饰高于父类方法权限修饰
*/
}
输出结果:
Zi中show方法调用
Zi中method方法调用