JAVA—覆写(override)
定义:
子类定义了与父类完全相同的方法和属性,这种操作就叫做覆写
定义在两个类中,除了访问权限 (返回值 参数 方法名完全一样),子类不能比父类有着更加严格的访问控制权限
属性的覆写
没有意义,因为属性通常会用private封装起来,子类不知道有这个属性
子类不能直接调用
方法的覆写
第一点:.发生在有继承关系的类中,
第二点:子类方法与父类方法的方法名称、返回值类型、参数个数类型完全相同;
第三点:被覆写的方法不能比原方法有更为严格的访问权限
class Person{
public void print(){
System.out.println("1.滚你妈逼");
}
}
class Student extends Person{
public void print(){//方法的覆写
System.out.println("2.都去死,老子今天心情不好");
}
}
public class Day10{
public static void main(String[] args){
Student stu =new Student();
Person per=new Person();
per.print();
stu.print();
}
}
上述方法代码的运行结果
2.都去死,老子今天心情不好
要看对象到底调用了 原方法还是 覆写后的方法有两个要点
1.看当前对象是用哪个类new 的
2.当你掉用某个方法时,如果该方法已经被覆写则一定调用覆写后的方法
上述第三点:被覆写的方法不能比原方法有更为严格的访问权限
1.被覆写前的方法不能用private修饰,如果用该关键字修饰,则子类“覆写”的方法相当于定义了一个新的方法,因为子类不知道父类有一个相同的类;
2.如果覆写前的类用default 修饰 被覆写的方法能用 default和public修饰
如果覆写前的类用public 修饰 被覆写的方法能用public修饰