浅谈this和super()

本文深入探讨了Java编程中的this和super()关键字,包括它们在对象实例化、方法调用、构造器传递中的作用。重点阐述了this用于本类属性和方法的调用,super()用于调用父类构造器,以及两者在构造方法中的限制和使用场景。同时,文章还对比了this和super()的异同点。
摘要由CSDN通过智能技术生成

一直对this和super()关键字在使用方面和理解方面都不太清楚,根据以往经验和各种资料总结出以下内容:

java代码中要对象实列化时,至少有一条从本类出发到Object的通道,而这条通道的开辟者主要就是thissuper,逢山开路,遇水搭桥,但是它俩往往是默默无闻的,在很多情况下可以被省略:

  • 本类方法调用本类属性
  • 本类方法调用另一个类方法(本类继承另一个类)
  • 子类构造方法隐含调用super()

任何类在创建之时,都有一个默认的无参构造方法,这个无参构造方法就是super()的一条默认通道,构造方法的参数列表决定了调用通道的选择,如果子类指定调用父类的某个构造方法,super()就会不断的往上走,如果没有指定,则默认调用super(),如果父类没有提供默认的构造方法,子类在继承时就会编译错误

如果父类坚持不提供默认的无参构造方法,必须在本类的无参构造方法中使用super方式调用父类的有参构造方法,一个实列变量可以通过this赋值另一个实列变量,一个实列方法可以通过this调用另一个实列方法,甚至一个构造方法都可以通过this调用另一个构造方法,如果用this和super()指代构造方法,this和super()在一个构造方法中只能出现一个,也只能出现一次,如果两个都出现,或者多次出现在实列化对象时,会因子类调用到多个父类构造方法而造成混乱

由于this和super()都在实列化阶段调用,所以不能在静态方法和静态代码块中使用this和super()关键字,this还可以指代当前对象,如在同步(synchronized)代码块中,但是super()并没有此功能,但super()也有自己的功能,在子类重写父类方法时,可以使用super()调用父类同名的实列方法

this和super

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值