public class Fa {
public String id;
public String name;
//无参构造器
public Fa() {
System.out.println("父类无参构造器执行啦");
}
//有参构造器
public Fa(String id, String name) {
this.id = id;
this.name = name;
}
public void work(){
System.out.println("爸爸认真学习");
}
}
class zi extends Fa {
public zi() {
System.out.println("子类无参构造器执行啦");
}
public zi(int age) {
super("250", "haha");
System.out.println("年龄"+age);
System.out.println("我的ID是:"+id+"我的名字是"+name);
}
public zi(String id, String name) {
super("5201", "haha");
System.out.println("子类有参构造器" + name);
}
@Override
public void work(){
super.work();
System.out.println(super.name+"儿子认真学习");
}
//定义测试类
public class TestFa {
public static void main(String[] args) {
zi z = new zi();
System.out.println(".....................");
zi yi = new zi(20);
System.out.println(".....................");
zi you = new zi("1314", "hahaha");
yi.work();
}
}
子类所有构造器默认调用父类的无参构造函数(其实是默认省略掉了一行代码:super();如果需要添加必须放在第一行,否则报错;
super(…)根据参数匹配去调用父类的构造器,可以让父类的构造器帮助初始化对象;
super用在本类中访问父类成员:
super.父类成员变量
super.父类成员方法
super(…);在本类构造器中访问父类其他构造器。
衍生:this(…):在本类构造器中访问本类其他构造器。
super(…)和this(…)不能同时出现在构造器中,因为都要在第一行!