super关健字
1 super 对应的就是本类的父类的一个引用。
2 super 可以指定调用 父类的成员变量
调用 父类 的成员变量 super.name
调用 本类 的成员变量 this.name
3 super 可以指定调用父类的成员方法
super.show(),
//this.show();
需要注意的地方是:
如果在一个子类的构造器中通过super() 调用父类的构造器
必须写在第一行
class P{
String name = "P";
public void show(){
System.out.println("-------p--show()----");
}
public P(){
System.out.println("-------P()-------");
}
public P(String name){
System.out.println("-------P(String)-------");
this.name =name;
}
}
class B extends P{
String name = "B";
public void show(){
System.out.println(this.name+"--------B--show()-----------"+super.name);
}
public B(){
//super(); 当调用一个构造器创建对象的时候,系统会先看这个构造器的第一行是不是this(),
// 再看有没有显示的写一个super();
// 如果第一行没有this()也没有super(),那么系统会自动的添加一个super();
// 所以基于上面的原因 如果要写this()或者super(),必须写在第一行。
// 在一个构造器中只能要不写this(),要不就写super();,不能2个都写。
System.out.println("-------B()-------");
}
public B(String name){
this();
//super();
System.out.println("-------B(String)-------");
//super(name);
}
}
public class TestDemo2 {
public static void main(String[] args) {
B b = new B("sss");
b.show();
}
}