this和super的作用对比
一. 二者的区别对比
-
属性的区别:
this访问本类中的属性,super访问父类中的属性。 -
方法的区别:
this访问本类中的方法,super访问父类中的方法。 -
构造器的区别:
this调用本类构造器,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。 -
其他区别:
this表示当前对象。super不能表示当前对象
this | super |
---|---|
访问本类中的属性 | 访问父类中的属性 |
访问本类中的方法 | 访问父类中的方法 |
调用本类构造器,必须放在构造方法的首行 | 用父类构造,必须放在子类构造方法首行 |
表示当前对象 | 不能表示当前对象 |
二. 注意点
-
在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造方法执行;
因为每一个子类的构造方法中的第一行都有一条默认的隐式语句super(); -
this() 和super()都只能写在构造方法的第一行;
-
this() 和super() 不能存在于同一个构造方法中。
第一,this()和super()都必须写在构造方法的第一行;
第二,this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过; -
this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)。