揭祕子類構造函數執行過程

子父類中的構造函數函數

      在對子類對象進行初始化時,父類的構造函數也會運行,那是由於子類的構造函數底層默認第一行有一條隱式的語句 super();測試

seper(); 會訪問呢父類空參數的構造函數,並且子類中的全部構造函數默認第一行都是seper();ui

爲何子類必定要訪問父類中的構造函數?this

1.由於父類中的數據子類能夠直接獲取,因此子類對象在創建時,須要先查看父類是如何對這些數據進行初始化的。spa

2.因此在子類在對象初始化時,要先訪問一下父類中的構造函數。3d

3.若是要訪問父類中指定的構造函數,能夠經過手動定義super語句的方式來指定。code

package cn.zhaoqiang.pet;
/*
 * 寵物類,狗狗和企鵝的父類
 * */

public class Pet{
    private String name = "SeyHello";  //名字
    private int health = 100;  //健康值
    private int love = 10;      //親密度
    //無參構造方法
    public Pet() {
        this.health=95;
        System.out.println("執行寵物的無參構造方法");
    }
    //有參構造方法
    public Pet(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getHealth() {
        return health;
    }
    public void setHealth(int health) {
        this.health = health;
    }
    public int getLove() {
        return love;
    }
    public void setLove(int love) {
        this.love = love;
    }
    //輸出寵物信息
    public void print(){
        System.out.println("寵物自白:\n個人名字叫:"+this.name+",個人健康值爲:"+this.health+",我和主人的親密度:"+this.love);
    }
    
}

 

package cn.zhaoqiang.pet;
/*
 *  寵物類狗狗的子類
 * */

public class Dog extends Pet {
    //品種
    private String strain;
    //有參構造 名字,品種
    public Dog(String name,String strain){
        super(name);//此出不能使用 this.name=name;
        this.strain=strain;
    }
    public String getStrain(){
        return strain;    
    }
}
package cn.zhaoqiang.pet;

/*
 * 企鵝類,寵物的子類
 * */

public class Penguin extends Pet{
    private String sex;  //性別
    //有參構造方法
    public Penguin(String name,String sex){
        super(name);//此出不能使用 this.name=name;
        this.sex = sex;
    }
    public String getsex(){
        return sex;
    }

}
package cn.zhaoqiang.pet;
/*
 * 測試類的繼承;
 * 
 * */

public class Test {
    public static void main(String[] args) {
        //建立寵物對象pp並輸出信息
        Pet pp = new Pet();
        pp.print();
        //建立狗狗對象dog並輸出信息
        Dog dog =new Dog("藏獒", "哈吉吧");
        dog.print();
        //建立企鵝對象pgn並輸出信息
        Penguin pgn = new Penguin("毛奧","Q妹"); 
        pgn.print();
    }

}

相關文章
相關標籤/搜索