子类重写父类方法
子类可以继承父类的很多特性,但是在有些时候,父类提供的方法会出现不适用的情况,比如之前的例子里, print()
方法就没有打印出狗狗的品种,这种情况下就可以通过重写父类的方法来解决问题,给它打印出来。
父类Pet类的代码不需要改变,在子类Dog类的基础上作改动即可。先贴一下原来的Dog类:
public class Dog extends Pet {
private String strain;
public Dog(String name, String strain) {
super(name);
this.strain = strain;
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
}
现在需要把狗狗的品种 strain 一起输出,则对父类Pet类中的 print()
方法进行重写。父类的 print()
:
public void print() {
System.out.println("我的名字叫" + this.name + ",我的健康值是" + this.health+ ",与主人的亲密度是" + this.love);
}
可见并没有输出 strain 这个变量,因为父类本身也不存在这么个变量,于是开始重写父类的这个 print()
方法,在Pet类里新定义一个 print()
:
public void print() {
super.print();
System.out.println("我是一只" + strain);
}
重写完成,运行结果:
我的名字叫二哈,我的健康值是100,与主人的亲密度是0
我是一只哈士奇
重写父类方法有几个注意事项:
- 子类方法名必须要和父类方法名一致
- 子类方法传入参数必须要和父类方法一致
- 子类方法的返回值必须要和父类方法返回值一致
- 子类方法的访问权限应该等于或大于父类方法的访问权限