覆写
1. 方法的覆写:子类定义与父类方法名称相同,参数个数和类型完全相同的方法。
2. 如果方法覆写,那么在实例化子类的时候,调用的将会是子类所覆写过的方法。
3. 覆写的意义在于优化父类的功能。
4. 子类方法覆写后,如果想要调用父类的方法,必须使用 super.方法()
5. 只要是在子类中调用父类的方法,一定要在方法前追加 super.方法()
class Older {public void print(){System.out.println("父类的方法");} }class Young extends Older {public void print(){System.out.println("子类覆写了父类的方法");} }public class Demo{public static void main(String args[]){new Young().print();} } /*--------------------------------------------- E:\Javacode>java Demo 子类覆写了父类的方法E:\Javacode>*/
方法覆写的限制:
1. 被覆写的方法不能拥有比父类更为严格的访问权限
public > default > private
a. 如果父类用 private 定义,那么子类可以为 private, default, public
b. 如果父类用 default 定义,那么子类可以为 default, public
c. 如果父类用 public 定义,那么子类只能用 public 定义
方法重载与覆写的区别:
重载:方法名称相同,返回值,参数类型和个数不同,没有权限限制,发生在 一个类中
覆写:方法名称,返回值,参数类型和个数都相同,被覆写的方法不能有更严格的控制权限,发生在继承关系中
属性覆盖:子类定义了与父类相同名称的成员
class Old {String info = "我是你爸爸"; }class Son extends Old {String info = "我是你儿子"; //属性覆盖--如果父类的 info 用 private 封装了,那么子类的info就和父类没有什么关系了public void fun(){System.out.println(super.info);System.out.println(this.info);} }public class Demo{public static void main(String args[]){Son son = new Son();son.fun();} } /*--------------------------------------------- E:\Javacode>java Demo 我是你爸爸 我是你儿子E:\Javacode>*/
super 和 this 的区别:
1. 在程序类中使用 this 表示先从本类查找所需要的属性或者方法。如果本来不存在再查找父类定义。
2. super 表示不查找子类,直接查找父类的属性或者方法。
3. this 和 super 都可以进行构造方法的调用, this() 调用的是本类的构造方法, super() 是由子类调用父类的构造,两者都需要放在构造方法的首行,所以不能同时出现。
4. this 可以表示当前对象。
转载于:https://www.cnblogs.com/dododo70/p/10402453.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
