super的使用规则
调用父类构造函数:
在子类的构造函数中,super()用于调用父类的构造函数。这必须是子类构造函数中的第一条语句(如果有的话)。
如果子类构造函数中没有显式调用super(),则默认调用父类的无参构造函数(如果父类存在无参构造函数的话)。
如果父类没有无参构造函数且子类构造函数中没有显式调用父类的其他构造函数,则会导致编译错误。
访问父类成员:
在子类的方法中,可以使用super.成员变量名或super.成员方法名()来访问父类的成员变量或方法,特别是当子类与父类有同名的成员变量或方法时。
使用场景限制:
super不能用于static环境中,因为static方法是属于类的,不是属于对象的,而super是引用当前对象的直接父类的。
super和this不能在同一构造函数中同时使用来调用构造函数,因为它们都必须是构造函数中的第一条语句。
this的使用规则
构造函数调用:
在一个类的构造函数中,this()用于调用同一个类的另一个构造函数。这也必须是构造函数中的第一条语句。
通过this()调用构造函数可以帮助代码复用,避免重复的代码段。
引用当前对象:
在类的方法中,this关键字代表当前对象的引用。它可以用于访问当前对象的成员变量和方法。
当局部变量与成员变量同名时,this可以用来区分它们。
返回当前对象:
在链式调用中,this可以用于返回当前对象,从而实现连续调用同一个对象的不同方法。
使用场景限制:
this也不能在static环境中使用,因为static成员是属于类的,而this是引用当前对象的。
在构造函数中,this()调用必须放在任何成员变量赋值之前,以确保在调用其他构造函数之前,当前对象的状态是已知的。
共同点:
super和this都不能在static环境中使用。
它们都必须在构造函数中作为第一条语句(如果需要的话)。
不同点:
super用于引用当前对象的直接父类,而this用于引用当前对象本身。
super主要用于调用父类的构造函数和访问父类的成员,而this主要用于调用本类的其他构造函数、访问本类的成员变量和方法,以及返回当前对象以实现链式调用。
了解super和this的使用规则对于编写高效、可维护的面向对象代码至关重要。