基于继承的构造方法

  1. 当创建一个子类对象时,会先调用父类的构造方法,再调用子类的构造方法
  2. 每一个子类的构造方法默认都会调用父类的无参构造方法
  3. 当父类没有无参构造时,子类必须手动调用父类构造方法
  4. super语句和this语句一样,必须写在第一行
  5. 子类的每一个构造方法都必须直接或间接调用父类构造方法
class Person{
	String name;
	int age;
	Person(String name){
		this.name=name;
	}
	Person(String name,int age){
		this(name);
		this.age=age;
	}
}
class Student extends Person{
	Student(String name){
		super(name);
	}
	Student(String name,int age){
		//这里相当于super(name,age);
		this(name);
		this.age=age;
	}
}
class Fu{
	Fu(){
		System.out.println("父类无参构造");
	}
	void show(){
		System.out.println("父类show方法");
	}
}
class Zi extends Fu{
	String name;
	Zi(){
		System.out.println("子类无参构造");
	}
	Zi(String name){
		System.out.println("子类含参name构造");
		this.name=name;
		}
	}
public class Test{
	public static void main(String[] args){
		//子类创建对象,先调用父类的无参构造,再调用子类的无参构造,之后调用继承的父类的show方法
		Zi zi= new Zi();
		zi.show();
		//子类创建对象,先调用父类的无参构造,再调用子类的一参构造
		Zi zi1= new Zi("曹操");
		//子类创建对象,先调用父类的无参构造,父类没有无参构造,子类使用super手动调用父类的一参构造
		Student s1=new Student("刘备");
		System.out.println(s1.name);
		//子类创建对象,先调用父类的无参构造,父类没有无参构造,子类使用super手动调用父类的两参构造
		Student s2=new Student("关羽",20);
		System.out.println(s2.name+s2.age);
	}
}

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章