Java面向对象中继承知识的关键字(this与super)

this:

1、this. --- 这里的this代表的是当前对象,然后通过“.”操作符,在类的内部访问当前对象的属性或调用当前对象的行为;

2、this() --- 这里的this代表的是本类的构造方法。把它写在本类的构造方法的第一句,表示调用本类的另一个构造,具体调用是谁是通过实参与形参的匹配关系去寻找的。

super:

“super.”当中的super代表的是当前对象的父类对象部分。

通过"."操作符只能访问到从父类继承而来的,并且被访问修饰符允许看到的属性和行为。

*结论:*

凡是用super.能看到的属性和行为,用this.一定能看到;

this.能看到的属性和行为,super.不一定能看到。

所以,大部分情况下,我们更愿意使用"this."。

只有两种情况,我们会用"super.",或者说只有两种情况“super.”和"this." 是有区别的:

1、在子类中用“this."调用重写方法的时候,得到的是子类自己重写后的实现;

而在子类中用"super."调用重写方法的时候,得到的是子类重写前父类中的实现。

场景:假如,子类的某个方法是重写父类的某个方法,但是它是在父类的实现之后加上特有代码,那么我们就可以在重写方法中,先用super.调用父类的实现,然后再加上自己的实现。

2、如果子类和父类出现了同名属性,那么"this."就是访问子类自己的属性;"super."就是访问父类中定义,被子类继承的属性。

PS:由于super()只能写在子类的构造方法当中,且只能是第一句。这说明,super()与this()不能共存。

这也是在面试的时候常遇到的面试题,因此要熟练掌握这两个关键字的用法,分清楚它们之间的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值