- super调用构造方法:
- 子类调用父类的无参构造时(父类存在无参构造),系统会自动在子类无参构造前加上super()表示先调用父类的无参构造(实例化子类的时候先调用父类的构造方法实例化父类,再调用子类的构造方法)此时super语句可以省略。
/*
super调用子类无参构造
*/
class Person3{
public Person3(){
System.out.println("1.Person类的构造方法" );
}
}
class Student3 extends Person3{
public Student3(){
//编译以后编译器会自动加隐藏语句,先调父类的无参构造,此处的super可省略
super();
System.out.println("2.Student类的构造方法");
}
}
public class ExSuper {
public static void main(String[] args) {
Student3 stu3 = new Student3();
}
}
- 调用父类的有参构造,当父类不存在无参构造时,必须在子类构造方法中使用 super(参数) 明确指定调用父类的哪个有参构造。
2.super调用普通方法:super.方法名(参数)表示直接从父类中找到同名方法并调用
3.super调用普通属性:super.属性名表示直接重复类中找到同名属性调用
/*
调用父类的同名方法,同名属性
*/
class Person5{
public String info = "person";
public void print(){
System.out.println("1.Person");
}
}
class Student5 extends Person5{
public String info = "student";
public void print(){
super.print();//表示调用父类的print()
System.out.println("2.Student");
System.out.println(super.info);
}
}
public class ExSuper3 {
public static void main(String[] args) {
Student5 stu5 = new Student5();
stu5.print();
}
}