super 与 this 之间的区别:
this: 指代当前new对象
1、本类构造器的首行调用本类中的其他构造器this(参数列表)
2、区分局部与成员同名问题(默认就近原则、通过this.调用成员)
super: 指代父类对象
1、子类构造器的首行,通过super(参数)调用父类中的指定构造器
2、如果没有显示通过super(参数)调用,默认调用父类的空构造
3、区分子父类中同名成员(1、如果不存在同名问题 : 可以省略super.调用父类成员;2、如果存
在子父类同名成员问题,同名局部问题;3、默认就近原则(有局部找局部(1、通过this.找子类成
员;2、通过super.找父类成员)))
注意:
1、子父类继承关系下 : 创建子类对象的时候,其实会先父类后子类
2、不能在构造器的首行同时使用this(参数)与super(参数)
3、this与super都不能使用在静态方法中
public class Class001_Super {
public static void main(String[] args) {
Zi zi = new Zi("");
zi.test();
}
}
class Fu{
String str = "FuStr";
public Fu(){
System.out.println("Fu");
}
public Fu(int i){
System.out.println("Fu");
}
}
class Zi extends Fu{
//String str = "ZiStr";
public Zi(){
super(100);
//super();
System.out.println("Zi");
}
public Zi(String s){
this();
System.out.println("Zi----String");
}
public void test(){
String str = "local";
System.out.println(super.str);
}
}