@Override其实可以不写,但是不写可能出错了都不知道
@Override的作用:检验是否为有效正确的方法重写
@Override的使用条件:
必须保证父类和子类之间方法的名称相同,参数列表也相同,这也是重写的定义,(如果说参数列表一样那不就是重载了,)
注意,是写在待检测方法前面
public class Dad{
public void method(){
}
}
public class Son extends Dad{
@Override//如果这里报错,说明根本没有进行覆盖重写,比如子类中method
//变成method555
//可以把鼠标放在上面子类创建语句然后按下alt加回车,直接显示重写方法,即下面的代码
public void method(){
}
}
方法覆盖重写的注意事项:
1: 子类方法的 返回值 必须 小于等于 父类方法的 返回值
(Object类是所有类的公共最高父类,万物皆儿子!!!!)
2: 子类方法的 权限修饰符 必须 小于等于 父类方法的 权限修饰符
(public > protected > (default) > private)
其中,default意思是不写权限修饰符,如int num
覆盖重写的应用
比如有一款老手机,具有来电显示号码功能
public class OldPhone{
//旧手机来电显示号码功能
public void show(){
System.out.println("号码显示");
....
....
...
...
...
...
....
}
}
后来手机更新,多了来电显示头像功能
public class NewPhone extends OldPhone{
//新手机来电显示头像功能,我们在这里进行重写!!!!!!
public void show(){
super.show();
System.out.println("头像显示");
}
}
我们发现,这样重写省下很多代码!!!!!,不需要再重新打或者复制过来,就一句super.show();就完事了
重点参考该文章