重写的概述
重写是基于继承来说的,因为父类的方法需求不满足于子类,所以就要在进行方法重写,如果不知道继承是啥可以看我上一篇笔记
在这里用代码举个栗子
例如:我们定义了一个动物类代码如下:
public class Animal {
public void run(){
System.out.println("动物跑的很快!");
}
public void cry(){
System.out.println("动物都可以叫~~~");
}
}
然后定义一个猫类,猫可能认为父类cry()方法不能满足自己的需求
代码如下
public class Cat extends Animal {
@Override
public void cry(){
System.out.println("我们一起学猫叫,喵喵喵!喵的非常好听!");
}
}
public class Test {
public static void main(String[] args) {
// 创建子类对象
Cat ddm = new Cat();
// 调用父类继承而来的方法
ddm.run();
// 调用子类重写的方法
ddm.cry();
}
}
@Override重写注解
-
@Override:注解,重写注解校验!
-
这个注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。
-
建议重写都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
加上后的子类代码形式如下:
public class Cat extends Animal {
// 声明不变,重新实现
// 方法名称与父类全部一样,只是方法体中的功能重写写了!
@Override
public void cry(){
System.out.println("我们一起学猫叫,喵喵喵!喵的非常好听!");
}
}
重写的本质
就是子类把父类的虚方法给覆盖了
重写的注意事项
在这里就需要自己理解了,但是如果理解不了那大家就可以死记第4个就好了,
我来讲一下我自己的理解把,这里要先讲第五个因为这个是前台只有虚方法表中的数据才可以被重写意思就是private和static还有final这些修饰的方法是不能被重写的。
第一个就是方法名和形参要和父类的一样,这个就很好理解了,就不多解释了。
第二个是权限一定要大于等于父类这个就是因为有些我还没学所以就只能看图片上面的提示了。
第三个就是返回值类型要小于等父类基本类型的话就是byte小于char小于short小于int小于long小于float小于double。引用类型的就不知道了。