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