一、super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
二、super有三种用法
1.子类引用父类的变量
2.子类引用父类的方法
3.在子类的构造方法中引用父类构造函数
三、子类引用父类的变量以及子类引用父类的方法测试
1、源码
Country.java
public class Country {
public String name="ENGLISH";
public void getName()
{
System.out.println("father class "+name);
}
}
demo .java
public class demo extends Country{
private String name="london";
@Override
public void getName() {
super.getName();
System.out.println("Son class "+name);
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
demo b=new demo();
b.getName();
}
}
2、运行结果
四、在子类的构造方法中引用父类构造函数
1、super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
2、编译器会自动在子类构造函数的第一句加上 super() 来调用父类的构造函数;可以省略不写,如果想写上的话必须在子类构造函数的第一句,可以通过super来调用父类其他重载的构造方法,只要相应的把参数传过去就好。
3、源码
Person.java
class Person {
Person() {
System.out.println("父类·无参数构造方法: "+"A Person.");
}//构造方法(1)
Person(String name) {
System.out.println("父类·含一个参数的构造方法: "+"A person's name is " + name);
}//构造方法(2)
}
demo.java
public class demo extends Person {
demo() {
super(); // 调用父类构造方法(1)
System.out.println("子类·调用父类 无参数构造方 "+"A chinese coder.");
}
demo(String name) {
super(name);// 调用父类具有相同形参的构造方法(2)
System.out.println("子类·调用父类 含一个参数的构造方法 "+"his name is " + name);
}
demo(String name, int age) {
this(name);// 调用具有相同形参的构造方法(3)
System.out.println("子类:调用子类具有相同形参的构造方法:his age is " + age);
}
public static void main(String[] args) {
demo cn = new demo();
System.out.println("\n\n***************************************\n\n");
cn = new demo("weihonghua");
System.out.println("\n\n***************************************\n\n");
cn = new demo("weihonghua", 18);
}
}
4、测试运行结果