2017-05-28 8 views
0

の配列をプリントアウトそれは、安全なだけでは、私が唯一の動物のオブジェクト配列</p> <p>に飛んでオブジェクトを印刷したい場合は私がフライング、水生クラスは動物クラスに</p> <p>を拡張する必要があり、私は簡単な質問</p> <p>を持つオブジェクト

IF choice is Flying 
FOR i=0 TO num CHANGEBY 1 DO 
    IF Animal[i] INSTANCEOF Flying THEN 
     str = Flying.toString 

    END IF 
END FOR 
OUTPUT str 

それとも

のような何かをします10

これを行い、toStringメソッドをオーバーライドします。

私はこれらの2つが正しいかどうかわかりません。そのヘルプのいずれかの種類が、これは私の質問

の一例である助けを

感謝あいまいな質問には申し訳ありません

編集 -

public static void display(ExampleA[] example) 
{ 
    for(int pos = 0; pos < example.length; pos++) 
    { 
     if(example instanceof A) 
     { 

      output = A.toString()    
     } 


    } 

    System.out.println(output); 

} 

歓迎です私は出力= Aを行うことができます.toString()を使用してオブジェクト文字列を取得するか、または行う必要がありますか?

output = example.toString() 

ov toStringメソッドを消去してAクラスのtoStringとExampleクラスを出力する

+4

この質問は間違いの可能性があります。与えられたコードが有効なJavaの近くにありません – ControlAltDel

+0

私の答えで説明したように、 'A.toString()'のようなものはありません。なぜそれを試してみるのではなく、あなたがそれをやり遂げることができないことを自分で見ているのか、何かをすることができるかどうかを尋ねるのはなぜですか? –

答えて

0

これはJavaコードではありません。しかし、質問の論理を考えると、第1の選択肢はより良い選択肢に見えます。

Flyingを参照するAnimalオブジェクトの配列があり、あるものがAquaticを参照しているものがある場合は、Animal参照からFlying/Aquaticメソッドを呼び出す場合は、常にinstanceOfチェックを条件が動物のインスタンスが参照している子オブジェクトに基づいている場合は、子クラスのメソッドを呼び出します。

1

こんにちは2番目のアプローチは正しいです、ここではそのためのJavaコードです。あなたはtoStringをParent(Animal)またはChild(Flying)クラスのどちらかで実装する必要があります。

public class Application { 

    public static void main(String[] args) { 
     Animal arr[] = new Animal[]{new Flying(), new Aquatic(), new Aquatic()}; 
     for (Animal a : arr) { 
      if (a instanceof Flying) { 
       System.out.println(a); 
      } 
     } 
    } 
} 

class Animal { 
} 

class Flying extends Animal { 
    @Override 
    public String toString() { 
     return "Flying::toString"; 
    } 
} 


class Aquatic extends Animal { 
} 
関連する問題

 関連する問題