2017-05-26 14 views
-3

私のプログラムでは、動物園、動物園、水生動物、飛行機の4つのクラスがあります。親クラスには子クラスのクラスフィールドがありますか?

動物園は、動物クラスのオブジェクトの配列を使用します。水泳と飛行は、動物クラスを拡張します。

これは単なる一例である

クラスフィールド

-environment

0123フライング

-name

水生動物

- 羽の数

フライングタイプのみを印刷したい場合。

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."); 
} 

注:SUBCLASSFlyingしかしされていない場合にのみAnimal[i]の上記のコードは出力を印刷します。

+1

'instanceof'と' getClass()。equals() 'は[同等ではありません](https://stackoverflow.com/a/4989843/2814308)です。したがって、最初の例ではサブクラスも印刷され、2番目の例ではサブクラスは印刷されません。 – SantiBailors

+0

はい、そうです。しかし、私はちょうどそれがチェックできる両方の方法を与えました。 –

+0

いいえ、そうではありません。 'x.getClass()。equals(Flying.class)'は、 'x'が' Flying'型で、そのサブクラスではない場合にのみtrueです。 – SantiBailors

関連する問題