目录
调用父类构造方法
子类的无参构造可以访问父类的无参构造,可以访问父类的有参构造
子类的有参构造可以访问父类的无参构造,可以访问父类的有参构造
创建一个Father类,写一个有参构造方法,写一个无参构造方法
public class Father {
private int age;
//有参构造
public Father(int age) {
super();
this.age = age;
}
//无参构造
public Father() {
super();
}
}
创建一个Son类继承Father类,可以通过子类的构造方法去访问父类的构造方法,这里就需要super关键字
子类的无参构造方法可以访问父类的无参构造方法,也可以访问父类的有参构造方法
a.子类无参构造方法访问父类的无参构造方法,直接写super();
b.子类无参构造方法访问父类的有参构造方法,需要传入和父类有参构造方法参数的参数类型一致的参数,super(参数);
子类的有参构造方法可以访问父类的无参构造方法,也可以访问父类的有参构造方法
a.子类的有参构造方法访问父类的无参构造方法,直接写super();
b.子类的有参构造方法访问父类的有参构造方法,需要传入和父类有参构造方法参数的参数类型一致的参数,super();
public class Son extends Father{
//无参构造
public Son() {
//调用父类有参
super(23);
//调用父类无参
//super();
}
//有参构造
public Son(int age) {
//调用父类有参
super(age);
//调用父类无参
//super();
}
}
调用父类的成员变量
super.成员变量名
public void son() {
//调用父类的成员变量
System.out.println(super.age);
}
调用父类的成员方法
super.父类的成员方法
public void mathod() {
System.out.println("Father.mathod()");
}
public void son() {
//调用父类的成员方法
super.mathod();
}
创建一个测试类,上面代码和下面是一个整体,所以第一次输出23,通过子类无参构造访问父类有参构造时传的参数,第二次输出25,通过子类的有参构造访问父类的有参构造传的参数
Son s1 = new Son();
s1.son();
System.out.println("=======================");
Son s2 = new Son(25);
s2.son();
特别注意
在子类调用父类构造方法时,super(有参/无参);语句必须是方法体的第一条语句
在一个类中 如果没有显示的写一个构造方法,系统会默认有一个无参构造方法。
如果写了一个构造函数(无论有参/无参),则不会再默认有一个无参构造方法