This指向是当前域内的对象,而Super更像是一个指针,指向父类。
public class Father {
protected String firstName;
public Father(String firstName) {
this.firstName = firstName;
}
}
public class Son extends Father{
private String lastName;
Son(String firstName,String lastName){
super(firstName);
this(lastName);
System.out.println("son name: "+this.firstName+this.lastName);
}
}
class Test{
public static void main(String[] args){
new Son("PAN","HU");
}
}
此示例直接出现编译时错误:Constructor call must be the first statement in a constructor
将Son类改成如下:
<pre name="code" class="java">public class Son extends Father{
private String lastName;
Son(String firstName,String lastName){
super(firstName);
this.lastName = lastName;
System.out.println("son name: "+this.firstName+this.lastName);
}
}
此示例输出结果如下: son name: PANHU
this犹如Son myson= new Son()中的myson一般。this是指现在域中的对象。
其他注意事项:
1、构造方法中Super()或者this() 只能放在第一行,
2、 一个构造方法不能同时存在super()和this()