super 和 this 可以对比着学习:
① this
this 是一个引用,保存内存地址指向自己。
this 出现在实例方法中,谁调用这个实例方法,this 就代表谁,this 代表当前正在执行这个动作的对象。
this 不能出现在静态方法中。
this 大部分情况下可以省略,在方法中区分实例变量和局部变量的时候不能省略。
“this(实际参数列表)”出现在构造方法第一行,通过当前的构造方法去调用
本类当中其它的构造方法。
② super
严格来说,super 其实并不是一个引用,它只是一个关键字,super代表了当前对象中从父类继承过来的那部分特征。this 指向一个独立的对象,super 并不是指向某个“独立”的对象,假设张大明是父亲,张小明是儿子,有这样一句话:大家都说张小明的眼睛、鼻子和父亲的很像。那么也就是说儿子继承了父亲的眼睛和鼻子特征,那么眼睛和鼻子肯定最终还是长在儿子的身上。假设this指向张小明,那么 super 就代表张小明身上的眼睛和鼻子。换句话说 super 其实是 this 的一部分。如下图所示:张大明和张小明其实是两个独立的对象,两个对象内存方面没有联系,super 只是代表张小明对象身上的眼睛和鼻子,因为这个是从父类中继承过来的,在内存方面使用了super 关键字进行了标记,对于下图来说“this.眼睛”和“super.眼睛”都是访问的同一块内存空间。
super 和 this 都可以使用在实例方法当中。
super 不能使用在静态方法当中,因为super 代表了当前对象上的父类型特征,静态方法中没有 this,肯定也是不能使用 super 的。
super 也有这种用法:“super(实际参数列表);”,这种用法是通过当前的构造方法调用父类的构造方法。
super与this对比记忆
最新推荐文章于 2022-08-16 19:26:45 发布