java——繼承遇到構造方法
背景
程式碼中建立的類, 主要是為了抽象現實中的一些事物.有的時候客觀事物之間就存在一些關聯關係, 那麼在表示成類和物件的時候也會存在一定的關聯.
例如, 設計一個類表示動物
class Animal{
public String name;
public void eat(){
System.out.println("Animal::eat()");
}
public void sleep(){
System.out.println("Animal::sleep()");
}
}
class Cat{
public String name;
public void eat(){
System.out.println("Cat::eat()");
}
}
class Bird{
public String name;
public void eat(){
System.out.println("Bird::eat()");
}
public void fly(){
System.out.println("Bird::fly()");
}
}
以上程式碼可以看出,程式碼思路雖然沒有問題,但是有很多冗餘的地方,為了簡化程式碼,我們引出繼承
語法規則
class 子類 extends 父類 {
}
使用繼承之後,程式碼變成
class Animal{
public String name;
public void eat(){
System.out.println(this.name + "Animal::eat()");
}
public void sleep(){
System.out.println("Animal::sleep()");
}
}
class Cat extends Animal{
//把以下程式碼遮蔽,依然可以執行
// public String name;
// @Override
// public void eat(){
// System.out.println(this.name+"Cat::eat()");
// }
}
public class TestDemo {
public static void main(String[] args) {
Cat cat = new Cat();
cat.name = "mimi";
cat.eat();
}
}
以上程式碼的輸出結果為:
mimiAnimal::eat()
繼承遇到構造方法
由於在給子類構造的時候,要先幫助父類進行構造,利用以下關鍵字:
super()
//必須放到第一行
> super代表父類物件的引用
super():呼叫父類的構造方法
super.data():訪問父類的屬性
super.func():訪問父類的成員方法
程式碼修改為:
class Animal{
public String name;
//新增構造方法
public Animal(String name) {
this.name = name;
}
public void eat(){
System.out.println(this.name + "Animal::eat()");
}
}
class Cat extends Animal{
public Cat(String name){
super(name);//顯式呼叫//寫道第一行
}
// public String name;
// @Override
// public void eat(){
// System.out.println(this.name+"Cat::eat()");
// }
}
class Bird extends Animal{
public Bird(String name){
super(name);
}
// public String name;
//
// public void eat(){
// System.out.println("Bird::eat()");
// }
//
public void fly(){
System.out.println("Bird::fly()");
}
}
public class TestDemo {
public static void main(String[] args) {
Cat cat = new Cat("haha");
cat.eat();
Bird bird = new Bird("bage");
bird.eat();//訪問Animal的
bird.fly();//訪問自己的
}
}
相關文章
- 繼承中構造方法的特點繼承構造方法
- Java零散知識點整理(二)(構造方法、繼承)Java構造方法繼承
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- 學習Java中遇到的繼承問題Java繼承
- 【C++】 46_繼承中的構造與析構C++繼承
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- 區分:派生類指定基類建構函式、繼承構造、委託構造函式繼承
- 12.16 Java繼承Java繼承
- Java的繼承Java繼承
- java繼承extendsJava繼承
- Java--構造器和構造方法Java構造方法
- Java建構函式的繼承問題Java函式繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- Java集合繼承圖Java繼承
- java中的繼承Java繼承
- java -繼承 -重寫Java繼承
- Java繼承練習Java繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- JAVA物件導向高階:繼承:許可權修飾符(繼承注意事項) 單繼承 Object類 方法重寫Java物件繼承Object
- 二、Java初級--8、繼承和重寫方法Java繼承
- java繼承與多型Java繼承多型
- 【Java】繼承、抽象、組合Java繼承抽象
- Java 繼承是什麼?Java繼承
- java物件導向繼承Java物件繼承
- 菱形繼承,虛繼承繼承
- 原型,繼承——原型繼承原型繼承
- Kotlin之類繼承結構Kotlin繼承
- java繼承基礎詳解Java繼承
- Java之繼承和抽象類Java繼承抽象
- 多繼承 與 多重繼承繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- 繼承中的建構函式繼承函式
- js建構函式的繼承JS函式繼承
- #JAVA#物件導向(繼承中成員方法的關係)Java物件繼承
- 這樣理解,java繼承中多型的屬性和方法Java繼承多型
- 繼承關係和魔術方法繼承
- Java入門系列-16-繼承Java繼承
- Java核心技術筆記 繼承Java筆記繼承