簡體   English   中英

從超類的數組中調用子類的方法

[英]Calling a Method of a Subclass From an Array of the Superclass

考慮以下。 您有一個狗類和一個貓類,它們都擴展了動物類。 如果您創建一個動物類數組。

Animal[] animals = new Animal[5];

在此數組中,每個元素設置5個隨機的貓和狗。 如果Dog類包含bark()方法,而Cat類不包含方法,則如何根據數組調用此方法? 例如。

animals[3].bark();

Iv'e試圖投射元素,我正在檢查一只狗,但無濟於事。

(Dog(animals[3])).bark();

選項1:使用instanceof (不推薦):

if (animals[3] instanceof Dog) {
    ((Dog)animals[3]).bark();
}

選項2:使用抽象方法增強Animal

public abstract class Animal {
    // other stuff here
    public abstract void makeSound();
}
public class Dog extends Animal {
    // other stuff here
    @Override
    public void makeSound() {
        bark();
    }
    private void bark() {
        // bark here
    }
}
public class Cat extends Animal {
    // other stuff here
    @Override
    public void makeSound() {
        meow();
    }
    private void meow() {
        // meow here
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM