2017-05-28 137 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 { 
}