this和super的总结

文章目录

this的用法
super的用法
对比和总结

一、this的用法

this是在一个类当中作为一个隐式对象存在,所谓隐式就是说:这个对象不用显式声明,在类内部自带,可以直接使用,所以也是一个关键字
它的含义是在类的内部代表当前操作对象。

用法1、this.
通常在代码中访问本类的属性或者方法行为时,在属性名或方法名前面加this. ;当在一个方法当中,局部变量和属性变量出现了重名的情况,那么根据就近原则 JVM会认为这个名字代表的是该方法中的局部变量名,所以需要给前面的属性变量名加this.指明。

使用 this. 还有两个好处:
第一是 this. 只能调用到本类 的属性和方法,所以可以在阅读代码的时候和普通局部变量做区分;
第二是在属性和方法过多的情况下, this. 会触发 IDE工具的联想功能,帮助我们快速找到要操作的属性或调用的方法;
2、this()
当一个类当中有多个构造方法的时候,而且这些构造方法都有复用的代码,那么A构造方法就可以使用this()调用B构造方法的代码,只要括号里填写上与B构造方法同样的形参列表,从而就达到了构造方法的代码共享。
语法:只能写在构造方法当中且必须是第一句!

二、super的用法

super是指向父类的引用,如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。而我们在写有参构造方法的时候系统是不会自动生成默认无参构造方法的,所以就需要我们手动编写无参构造方法,否则编译器会报错。
super也有两种用法:
第一种用法:super()—>调用父类的指定构造方法
作用:由于产生子类对象之前先要产生父类对象部分,那么就要
调用父类构造方法;如果父类有多个构造,那么可以通过super()调用指定的父类构造方法,匹配方式是实参和形参的匹配;
使用语法:
只能写在子类构造方法的第一句;
第二种用法:super. 后面跟属性或行为;
super. 后面跟方法的时候,它是在调用父类中的该方法(子类的方法重写前);
当super.后面跟属性的时候,它是在调用父类当中定义的属性;

三、对比和总结

对比:
1、当super.后面跟方法的时候,它是在调用父类中的该方法(重写前);this.后面跟方法的时候,它是在调用子类中的该方法(重写后);
如果一个方法子类并没有重写,那么this.和super.效果一样;
2、 当super.后面跟属性的时候,它是在调用父类当中定义的属性;this.后面跟属性的时候,他既可以调从父类继承过来,也可以调用自身的;
只有一种情况,他们有区别,那就是父类定义了一个属性,子类又再一次定义了该属性,当然这是属于毫无意义的!因为这种在子类中定义和父类同名的属性,已经从父类继承了,没有意义再定义一次;
3、super()为子类调用父类的构造方法,this()为同类的多个构造方法之间互相调用;类似于”我的父类的“和”我的“的区别;
总结:
1、super. 能看到的 this. 一定能看到,反过来则不行;
2、super总是与父类相关,访问子类的属性和行为,我们通常全部用 this.
3、super()和this()都必须写在构造方法的第一句;所以不能同时使用;

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Java类中,this和super都是关键字,用于引用当前对象和父类对象。this代表本类对象的引用,super代表父类的内存空间的标识。\[1\] this关键字主要用于以下几个方面: 1. 调用本类中的成员方法或成员变量。 2. 在构造方法中调用本类的其他构造方法。 3. 返回当前对象。 super关键字主要用于以下几个方面: 1. 调用父类中的成员方法或成员变量。 2. 在子类构造方法中调用父类的构造方法。 3. 在子类中访问父类的构造方法。 在使用super和this时,有一些区别和注意事项: 1. 当super.后面跟方法时,它是在调用父类中的该方法(重写前);而this.后面跟方法时,它是在调用子类中的该方法(重写后)。 2. 当super.后面跟属性时,它是在调用父类中定义的属性;而this.后面跟属性时,它既可以调用从父类继承过来的属性,也可以调用自身的属性。 3. super()用于子类调用父类的构造方法,而this()用于同类的多个构造方法之间互相调用。 4. super()和this()都必须写在构造方法的第一句,不能同时使用。 总结起来,super总是与父类相关,用于访问子类的父类属性和行为;而this则是当前对象的引用,用于访问本类的属性和行为。\[2\] \[3\] #### 引用[.reference_title] - *1* [Java关键字(二):this 和 super](https://blog.csdn.net/weixin_52533007/article/details/124136944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [this和super总结](https://blog.csdn.net/weixin_42888747/article/details/108065671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值