A:案例演示
* 父类没有无参构造方法,子类怎么办?
* super解决
* this解决
* B:注意事项
* super(…)或者this(….)必须出现在构造方法的第一条语句上
public class Demo07_Extends {
public static void main(String[]args){
ZiLei3 z1=new ZiLei3();
//1.创建对象走子类空参构造
//2.this("二明",25);调用本类的有参构造,把值赋给本类的有参构造
//3.然后子类有参构造方法super(name, Age)语句,会把值赋给父类的有参构造
//4.然后输出执行父类中的打印语句,父类执行语句结束
//5.子类中的有参构造方法super(name, Age);也随之结束,执行子类有参构造方法中的打印语句
//6.然后this("二明",25);调用本类的有参构造方法执行结束,随即执行无参构造里的执行语句
System.out.println(z1.getAge()+"..."+z1.getName());
System.out.println("===========================");
ZiLei3 z2=new ZiLei3("小明",23);
//1.创建对象时,先走的子类有参构造
//2.然后子类有参构造方法中的super(name, Age),会把值赋给父类的有参构造
//3.然后输出执行父类中的打印语句,父类执行语句结束,
//4.子类中的有参构造方法super(name, Age);也随之结束,执行子类有参构造方法中的打印语句
//5.当父类中没有空参构造时,可通过super();来解决
System.out.println(z2.getAge()+"..."+z2.getName());
}
}
class FuLei3{
private String name;
private int Age;
/* public FuLei3(){
System.out.println("父类空参构造");
}*/
public FuLei3(String name,int Age){
this.name=name;
this.Age=Age;
System.out.println("父类有参构造");
}
public void setName(String name) {//设置姓名
this.name = name;
}
public String getName() {//获取姓名
return this.name;
}
public void setAge(int age) {//设置年龄
this.Age = age;
}
public int getAge() {//获取年龄
return this.Age;
}
}
class ZiLei3 extends FuLei3{
public ZiLei3(){
// super("小米",25);//隐藏一个super();会访问父类中的空参构造
this("二明",25);//调用本类中的构造方法
System.out.println("子类空参构造方法");
}
public ZiLei3(String name,int Age){
super(name, Age);//隐藏一个super();会访问父类中的有参构造
System.out.println("子类有参构造方法");
}
}