this 和 super 关键字

本文深入解析this与super关键字在面向对象编程中的应用,包括它们如何帮助调用当前对象及父类的成员变量和方法,以及在构造器中的使用规则。

this

this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。

this.成员变量 可调用当前对象的成员变量,一般是在当前类的某个方法的形参和当前的对象成员变量同名的时候用到。

this 在需要明确的地方使用即可,无须随处添加。

super

super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

子类中的成员变量或方法与父类中的成员变量或方法同名,用 super.成员 来代表父类的成员。

this 和 super 的构造器问题

在构造函数中使用 this() 表示调用当前对象的其他构造函数,以减少重复代码。应该放 this() 在构造函数中的第一行,因为其他构造方法有可能会有以 super() 的形式调用父类构造方法。

在构造函数中使用 super() 表示调用父类的某一个构造函数,应该放在构造函数中的第一行,因为子类本身就继承了父类的所有方法还有属性,只有在父类对象被构造出来后再执行子类的构造方法的其他语句才是合理。

每个子类构造方法的第一条语句,都是隐含地调用 super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。在子类中重载父类构造方法的时候,如果父类的构造方法是无参数的,可以不必写出supe(),如果是有参数的则必须写出的;

this 和 super 不能同时出现在一个构造函数里面,因为 this 必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义。

对于同一个类内的构造器,对于每个对象只能被调用一次,且是由 new 方法发起调用,可以使用 super 和 this 在不同构造器方法之间跳转,但是每个构造方法最多被调用一遍,同一个类内的构造方法最多有一个是实质上执行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值