this
this.代表当前对象的,谁在调用就代表谁
当this.用来区分同名变量时 局部变量和成员变量时
因为java中见名知意的规则,所以不能省略
例如:
public Person(String name){
this.name = name;
}
}
创建对象时调用代参构造器,成员变量中有name,而传进来的也是name
所以为了区分成员变量和局部变量就要使用this.name = name
来区分两个name
this()代表构造器之间的相互调用,this一定要在构造器的首行
super
super.代表当前对象父类的
和this一样,super也分为可省略和不可省略的
当需要区分成员变量和局部变量的时候就需要使用super.
suepr()
调用当前父类的构造器,默认情况下调用父类的无参构造器
在构造器当中this()和super()不能同时出现,默认存在的是super()
class Animals{
public Animals(){
System.out.println("父类的无参构造器");
}
}
class Dog extends Animals{
public Dog(){
super();
}
}
当程序调用Dog来创建对象时,会执行父类的无参构造器,执行里面的代码
所以会打印 父类的无参构造器