重写
重写 与 重载之间的区别:
都是方法的特性
重载:
同一个类中的多个方法
方法名相同
参数列表不同|方法签名不同
重写: 重写定义方法体
不同的两个类
继承关系|实现b关系
方法签名相同(方法名+参数列表)
场景:
在子类继承父类后,继承了一写功能方法,有些功能,功能的实现不满意,可以进行功能的重写(重新实现)
使用:
子类一旦重写方法,子类对象调用的时候,就会发生就近原则
子类对象调用功能时候,子类存在找子类,子类没有找父类
注意:
子类一旦重写父类中的方法,就是对父类方法进行屏蔽
检查是否为重写方法:
1.@Override 强制检查是否为重写方法,不是报错
2.工具中方法的左侧有提示
== <= >=满足的条件:
== : 方法签名完全相等
<= : 返回值类型为基本数据类型要求完全相等,如果为引用数据类型,子类方法返回值类型<=父类方法的返回值类型
>= : 权限修饰符: 子类方法的权限修饰符>=父类方法的权限修饰符
不能被重写的方法:
1.被private关键字修饰的方法不能被重写
1.被final关键字修饰的方法不能被重写
1.被static关键字修饰的方法不能被重写
当子类中出现于父类静态方法同名的方法时候,子类的同名方法也要是静态的,否则报错,但是不是重写方法
public class OverrideDemo01 {
public static void main(String[] args) {
SiCong si = new SiCong();
System.out.println(si.name);
si.words();
si.life();
si.test();
//父类对象调用父类功能,爷爷类....
new JianLin().words();
}
}
//父类
class YeYe{
public void test(){
System.out.println("yeye类功能test");
}
}
class JianLin extends YeYe{
public String name = "王健林";
//名言
static JianLin words(){
System.out.println("先定一个小目标,挣它一个亿!!!");
return null;
}
public void life(){
System.out.println("进口矿泉水洗脚!!!!");
}
//重写
public void test(){
System.out.println("JianLin类功能test");
}
}
//子类
class SiCong extends JianLin{
public String name = "王思聪";
//名言 重写
public static SiCong words(){
System.out.println("我不在乎....!!!");
return null;
}
}