首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 繼承與多態實戰:動物體系完整代碼示例滿足作業所有要求

     編輯:程式設計綜合問答

需求分析

  • 父類:2+ 私有成員、2+ 方法、1 構造器
  • 3 子類:各增 1+ 成員、1+ 方法、重寫父類同一方法
  • 測試:子類對象調用父類與自身方法、父類引用指向子類對象實現多態

完整代碼實現

// 父類
class Animal {
    private String name;
    private String type;
    
    public Animal(String name, String type) {
        this.name = name;
        this.type = type;
    }
    
    public void voice() { System.out.println(name + " 發出聲音"); }
    public void eat() { System.out.println(name + " 進食中"); }
    public String getName() { return name; }
}

// 子類 1:貓
class Cat extends Animal {
    private String furColor; // 新增成員
    
    public Cat(String name, String furColor) {
        super(name, "貓科");
        this.furColor = furColor;
    }
    
    @Override
    public void voice() { System.out.println(getName() + " 喵喵叫"); } // 重寫
    
    public void catchMouse() { System.out.println(getName() + " 捉老鼠"); } // 新增方法
}

// 子類 2:狗
class Dog extends Animal {
    private String gender;
    
    public Dog(String name, String gender) {
        super(name, "犬科");
        this.gender = gender;
    }
    
    @Override
    public void voice() { System.out.println(getName() + " 汪汪叫"); }
    
    public void guideBlind() { System.out.println(getName() + " 做導盲犬"); }
}

// 子類 3:大象
class Elephant extends Animal {
    private String birthPlace;
    
    public Elephant(String name, String birthPlace) {
        super(name, "象科");
        this.birthPlace = birthPlace;
    }
    
    @Override
    public void voice() { System.out.println(getName() + " 嗷嗷叫"); }
    
    public void playWater() { System.out.println(getName() + " 在戲水"); }
}

// 多態測試方法
public void testPolymorphism(Animal a) {
    a.voice(); // 動態綁定,調用子類重寫方法
    a.eat();
}

// 主程序
public static void main(String[] args) {
    Animal cat = new Cat("咪咪", "白色");
    Animal dog = new Dog("旺財", "公");
    Animal elephant = new Elephant("大象", "非洲");
    
    // 1. 子類對象調用父類與自身方法
    ((Cat)cat).catchMouse();
    ((Dog)dog).guideBlind();
    ((Elephant)elephant).playWater();
    
    // 2. 父類引用實現多態
    testPolymorphism(cat);
    testPolymorphism(dog);
    testPolymorphism(elephant);
}

關鍵知識點總結

概念代碼體現
封裝父類成員私有,提供公共 getter
繼承extends Animal 復用屬性與方法
多態父類引用指向子類對象,調用重寫方法
方法重寫三個子類均重寫 voice()
向上轉型Animal cat = new Cat(...)
向下轉型((Cat)cat).catchMouse() 調用子類專有方法

學習建議

  1. 手敲代碼,觀察輸出順序,理解動態綁定機制。
  2. 嘗試刪除 @Override 註解,觀察編譯器不報錯但運行行為不變(註解僅作檢查)。
  3. 擴展:添加抽象類/接口,規範 voice() 為抽象方法。

總結

此例完整覆蓋繼承、封裝、多態核心考點,是 Java 面向對象基礎的經典練習模板。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved