子父類中的構造函數函數
在對子類對象進行初始化時,父類的構造函數也會運行,那是由於子類的構造函數底層默認第一行有一條隱式的語句 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(); } }