supper和this关键字的区别
定义
this:
this是一个变量 ,一个引用。this保存的就是当前对象的地址,指向对象本身,即this代表的就是“当前对象”。
supper:
super关键字和this的作用类似,将被隐藏的父类的成员变量和成员方法变为可见,或者说用来引用被隐藏的父类的成员变量和成员方法。
区别
区别 | supper | this |
---|---|---|
前提不同 | 需要存在继承关系才能使用 | 不需要存在继承也可以使用 |
调用成员变量和方法 | 引用当前对象的直接父类中的成员,用来访问直接父类中被隐藏的成员变量或方法。父类与子类中有相同的成员时使用,如:super.变量名或super.成员方法名(实参)。 | 代表当前对象名,在程序中易产生二义性之处,应使用this来指明当前对象。如果方法的形参与类中的成员变量同名,这时需用this来指明成员变量名。 |
调用构造方法 | 调用父类中的某一个构造方法,应该为构造方法中的第一条语句 | 调用本类中另一种形式的构造方法,应该为构造方法中的第一条语句 |
其他 | 调用super()必须写在子类构造方法的第一行,否则编译不通过 | 每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类中没有这种构造方法,那么在编译的时候会报错 |
注意
1.this和super都指的是对象,所以均不可以在static方法中使用;
2.this()和super()一样都是对本类构造方法的调用,都是放在第一行,因此两者不能共存;