2017-05-26 73 views
-3

在我的程序中,我有4班动物园,动物,水生和飞行。父类可以有子类的类字段吗?

动物园动物使用类对象的数组。水上和飞行延伸了动物类。

这仅仅是一个例子

类字段

ANIMAL

-name

水产

-environment

FLYING

-number翅膀

如果我想只打印浮动型。

FOR i=0 TO total number of animals CHANGEBY 1 
    IF (Animal[i].getEnvironment).equals(land) 
     OUTPUT Flying.toString() 

我可以这样做吗?

+2

请提供一些Java代码为例,不只是一些伪代码。 –

+0

您需要循环,然后通过例如'instanceof'检查类型。 – luk2302

+0

请粘贴与您正在讨论的字段相关的代码。 –

回答

0

,如果我想打印只飞行式

是的,你可以做到这一点使用instanceof运营商。

if(Animal[i] instanceof Flying){ 
System.out.println("Ohh Yeah!! I can fly."); 
} 

注意:如果Animal[i]经过IS-AFlying测试上面的代码将打印输出;这意味着Flying或它的subclass

OR

if(Animal[i].getClass().equals(Flying.class)) { 
System.out.println("Ohh Yeah!! I can fly."); 
} 

注:上面的代码将打印输出,当且仅Animal[i]Flying不子类

+1

'instanceof'和'的getClass()。equals()方法'[不等效](https://stackoverflow.com/a/4989843/2814308)。所以第一个例子会打印子类,而第二个例子不会。 – SantiBailors

+0

是的,它会的。但是,我刚刚提供了两种可以检查的方式。 –

+0

不,它不会。 'x.getClass()。equals(Flying.class)'只有当'x'是类型'Flying'时才是true,而不是它的子类。 – SantiBailors

相关问题