super关键字( 和 this关键字的比较 )

发布时间:2026/7/24 20:22:13
super关键字( 和 this关键字的比较 ) 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类中的构造器为止正因为我们调用过子类所有的父类的构造器所以我们就会将父类中声明的属性、方法加载到内存中供子类的对象使用