this 和 super的区别
this:
- 在实例方法中则表示调用该方法的对象的引用。
- 在构造方法中则表示在本类中构造方法之间的相互调用。
super:
- 如果出现在构造方法中,表示子类调用父类的构造方法,其实super还可以引用父类的变量或者是普通方法
super和this在构造方法中只能出现在第一行
public class Hi{
public static void main(String[] args) {
C c = new C();
System.out.println("name:"+c.name+" age:"+c.age);
}
}
class A{
String name = "Jack";
public A(String name){
//name=name;
this.name=name;
}
}
class B extends A{
Integer age=23;
public B(Integer age){
super("Kangkang");
//age=age;
this.age=age;
}
}
class C extends B{
public C(){
super(30);
}
}
//输出:name:Kangkang age:30
上述代码中,A类和B类中的构造方法若不用this指派。name=name;age=age;则输出:name:Jack age:23。表示name和age属性的指派是无效的。
使用关键字:this.name=name;this.age=age;输出:name:Kangkang age:30
因此在构造方法定义要规范,在构造方法中使用到属性的时候需要加上this。