2017-05-28 109 views
0

的陣列我有一個快速的問題打印出對象

我有飛,水產類延伸的動物類

如果我想只動物對象陣列

是在打印出飛行物它的安全,只是像做

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 

或者

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

做到這一點,並重寫toString方法

即時通訊新到Java這樣的IM甚至不知道如果有這兩項是正確的。因此,任何形式的幫助是值得歡迎的

感謝您的幫助

編輯 -

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() 

and ov erride toString方法打印出A類中的toString以及Example類

+4

這個問題可能被貼上標籤。給定的代碼並不接近有效的Java – ControlAltDel

+0

正如我在我的回答中解釋的那樣,沒有'A.toString()'這樣的事情。你爲什麼問自己能不能做點什麼而不去嘗試,並親眼看到你做不到? –

回答

0

這不是一個java代碼。但考慮到問題的邏輯,第一個選項看起來更好。

如果您有一些Animal對象的數組,其中有些指的是Flying,有些指的是Aquatic,那麼如果您想從Animal reference調用Flying/Aquatic方法,則應始終執行instanceOf檢查如果條件則基於動物實例引用的子對象,調用子類方法。

1

嗨你的第二種方法是正確的,這裏是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 { 
}