如果子类中定义了和父类相同的方法名称时,就称为“覆写”;
一、方法的覆写(核心)
范例1:实现覆写
结论:
子类定义了和父类的方法名称相同,参数相同,返回值相同的方法后,表示覆写了父类中的方法,而当实例化的是子类对象,所调用的方法一定是被子类覆写的方法;
范例2:
有了继承概念后对于this和super的使用一定要清楚:
1)this:表示先从本类查找,如果本类没有则查找父类;
2)super:表示不查找本类,而是直接查找父类;
结论:
若想在子类中调用已经被子类所覆写的方法,那么在方法前加“supper.方法()”的形式
但是在进行方法覆写时关于权限的问题,被子类覆写的方法不能拥有比父类更严格的访问控制权限。PRivate < default (不写) < public。
若一个方法本身是public被子类覆写时变为了private,则称为权限严格了,那么此时子类覆写时,权限只能写public。如果父类的方法使用的是default权限,那么子类可使用default或public来表示;
二、面试题:OverLording(重载)、override(覆写)的区别
在方法重载时返回值类型可以不同,但是从代码开发来讲,返回值类型一定要保持相同。
三、属性的覆盖(无用)
当子类定义了和父类相同的属性名称时就被称为了属性的覆盖
一般而言属性都要求被封装,一旦属性被封装了,又何来覆盖呢?
四、this和super区别
总结:
1.this:调用本类属性(this .属性)、本类普通方法(this .方法())、调用构造(this(),必须放在首行),表示当前对象;
2. Super:由子类调用父类属性(super .属性)、调用父类非私有方法(super .方法())、调用父类构造(super(),必须放在子类构造首行);
3.当使用this和super调用构造时不能同时出现
新闻热点
疑难解答