我有一个简单的问题
我有飞行,水生类扩展动物类
如果我只想在Animal对象数组中打印出Flying对象
只做像
这样的事情是安全的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的新手,所以我甚至不确定这两个中的任何一个是否正确。所以欢迎任何形式的帮助
感谢您的帮助
编辑 -
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()
并覆盖toString方法以打印出A类中的toString以及Example类
答案 0 :(得分: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 {
}
答案 1 :(得分:0)
这不是java代码。但考虑到问题的逻辑,第一种选择看起来更好。
如果你有一个Animal对象数组,其中一些是指Flying,有些是指Aquatic,那么如果你想从Animal引用调用Flying / Aquatic方法,你应该总是在ifOf中检查if条件然后基于动物实例所引用的子对象,调用子类方法。