this() and super()的简记
Posted yangrongkuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this() and super()的简记相关的知识,希望对你有一定的参考价值。
this:this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
super:super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
this和super的异同:
1)this()和super()在构造方法,作用是在JVM堆中构建出一个对象。为了避免多次创建对象,同一个方法内只能调用一次this()或super()【两个不能同时出现,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过】。同时为了避免操作对象时对象还未构建成功,需要this()和super()的调用在第一行实现【以此来创建对象】,防止异常。
2)程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名(这也是this的一个用法)
3)super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
4)构造器中第一行默认是super(),一旦直接父类的构造器中没有无参的,那么必须显式调用父类的某个有参构造函数。
5)super()和this()均需放在构造方法内第一行。调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
以上是关于this() and super()的简记的主要内容,如果未能解决你的问题,请参考以下文章