Super是指当前类的父类,this指的是当前对象。
看下面的例子:
package test1;
/**
* Created by lzh on 1/19/2016.
*/
public class Father {
private String name = "origin name";
public Father(){
say(name);
}
public Father(String name){
say(name);
}
private void say (String name){
System.out.println("Hi,"+name+", I am your father !");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我的父类里面有个属性name并给了初值,提供了带参和不带参的两个构造器以及相关方法。
下面是我的子类,继承自上面的类Father
package test1;
/**
* Created by lzh on 1/19/2016.
*/
public class Test extends Father{
public Test(){
super("English");
}
public void setName(String name){
System.out.println(this);
super.setName(name);
}
public String getName(){
System.out.println(this);
return super.getName();
}
public static void main(String[] args) {
Test test = new Test();
test.setName("English");
System.out.println(test.getName());
}
}
我利用super("English")调用父类的带参构造器将打印出方法say()里面的语句,super.setName("English")给父类里面的name赋值,我分别在子类的方法getName和setName里面打印this看看我运行的结果:
由上图可以看出两个this是一样的,指的是test对象。