java中的super指的就是父类,用到super的有以下几种情况:
1.当父类与子类存在相同的方法或成员变量时,子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,
但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super
class S {
public int value;
public void m(){
value=10;
System.out.println("S"+value);
}
}
class SS extends S{
public int value;
public void m() {
super.m();
value=20;
System.out.println("SS"+value);
}
}
public class S3{
public static void main(String[] args){
SS n1=new SS();
n1.m();
}
}
输出结果
S10
SS20
2.存在构造函数时,如果调用super必须写在子类构造函数第一行,当没有显示的调用父类构造方法时(不用super)则调用基类无参数构造方法
class Person {
Person() {
System.out.println("Person");
}
Person(String name) {
System.out.println("父类"+name);
}
}
public class Chineseperson extends Person {
Chineseperson() {
super(); // 调用父类构造方法
}
Chineseperson(String name) {
super(name);// 调用父类具有相同形参的构造方法
System.out.println("子类"+name);
}
Chineseperson(String name, int age) {
this(name);// 调用具有相同形参的构造方法
System.out.println( age);
}
public static void main(String[] args) {
Chineseperson cn = new Chineseperson();
cn = new Chineseperson("lili");
cn = new Chineseperson("lucy", 18);
}
}
Person
父类lili
子类lili
父类lucy
子类lucy
18