以下のロジックは、AppleLeaf、MangoLeaf、およびBananaLeafの3つのクラスをすべて拡張しています。 Leafクラス。私は葉オブジェクトだけを取るメソッドを持っています。クラスの型に基づいて、以下のメソッドに正しくリダイレクトする必要があります。 しかし、私はあなたがそのように自動的にアップキャストすることはできませんように、「タイプのメインのメソッドhandleLeaf(AppleLeaf)は、引数には適用されません(リーフ)」というエラーメソッドをオーバーライドして基本クラスを取得し、拡張クラスを指導するメソッドの実装
public void main(String args[]){
for (Leaf leaf : leafList) {
handleLeaf(leaf);
}
}
private void handleLeaf(AppleLeaf node) {
String colour = leaf.getColour();
System.print.out(colour);
}
private void handleLeaf(MangoLeaf mLeaf) {
Int veins = mLeaf.getVeinCount;
System.print.out(veins);
}
private void handleLeaf(BananaLeaf bLeaf) {
Boolean withered = bLeaf.getTexture();
}
サブクラスは、すべての子タイプを知るためにスーパークラスに頼るのではなく、独自の 'handleLeaf'メソッドを処理しないのはなぜですか? –