super关键字( 和 this关键字的比较 )
2026/7/24 20:21:53 网站建设 项目流程

1、子类继承父类时,不会继承父类的构造器,只能通过super(形参列表)的方式调用父类指定的构造器

2、规定super(形参列表)这一句代码,必须放在子类构造方法的首行

3、前面说过,在构造器的首行可以使用this(形参列表)来调用本类中重载的构造器,
结合这里的第2,得出结论:在构造器的首行,this(形参列表)super(形参列表)只能二选一

4、如果,子类构造器的首行,既没有显式的调用this(形参列表),也没有显式的调用super(形参列表)
则,子类构造器默认调用super(),即调用父类中空参的构造器

5、由第3第4得出结论:子类的任何一个构造器中,要么会调用本类中重载的构造器,要么会调用父类的构造器
只能是这两种情况之一

6、由第5得到结论:
一个类中,声明有n个构造器,最多有n-1个构造器使用了this(形参列表)
则,剩下的那个一定用的是super(形参列表)

基于上面几点,最终总结:
我们在通过子类的构造器创建对象时,一定在调用子类构造器的过程中,直接或间接的调用到父类的构造器,
也正因为调用过父类的构造器,我们才会将父类中声明的属性、方法加载到内存中,供子类使用

补充1、this和super的使用场景

this关键字,可以表示当前对象的引用,用于访问当前对象的属性和方法。
super关键字,用于访问父类的属性和方法,
需要注意的是,super并不表示当前对象的引用,它只能用于访问父类的成员。

补充2、静态域中不能直接使用super和this

静态方法静态初始化块中,不能直接使用 this 或 super 关键字,
因为,静态方法是属于类的,而不是属于某个对象,
因此,无法使用 this 来表示对象引用,也无法使用 super 来表示父类。


鹅鹅鹅

1、当我们创建子类对象后,子类对象就获取了其父类中声明的所有属性、方法,
在权限允许的情况下,可以直接调用

2、当我们通过子类的构造器创建对象时子类的构造器一定会直接或间接的,调用到其父类的构造器,
而其父类的构造器,同样会直接或间接的调用到其父类的父类的构造器,…,直到调用了Object类中的构造器为止

正因为,我们调用过,子类所有的父类的构造器,
所以,我们就会将父类中声明的属性、方法加载到内存中,供子类的对象使用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询