2016-08-23 1 views
1

はのは、私が2と同様のクラスがあるとしましょう開始する:のAndroid/Javaの:スーパークラスを必要とする複数の類似したクラスではなく、必ず

Apple.java

public class Apple { 
    public string getFruitName(){ 
     return "apple"; 
    } 
    public string getFruitColor(){ 
     return "red"; 
    } 
} 

Banana.java

私のアプリケーションではグローバル変数が必要なので、グローバル変数を動的に生成できますスコープのバナナまたはリンゴはどこにでもあります。 キャッチフレーズはですが、どれが生成されているのか分かりませんし、リンゴやバナナかもしれません。

私はを推測していますスーパークラス(Fruit.java)が必要で、フルーツというグローバル変数をインスタンス化する必要があります。 fruit.getFruitNameとfruit.getFruitColorを呼び出すと、ランダムに生成されたリンゴまたはバナナが返されると予想されます。私はちょうどすべてのこれらの人に親クラスを与える方法を本当に知らない。あなたは、その後できるインタフェース

interface Fruit { 
    String getFruitName(); 
    String getFruitColor(); 
} 

を使用し、ちょうどリンゴとバナナ

public class Apple implements Fruit { 
    @Override 
    public String getFruitName() { 
     return "apple"; 
    } 

    @Override 
    public string getFruitColor() { 
     return "red"; 
    } 
} 

の両方のためにそれを実装することができ、私のアプリケーションの

public class main extends AppCompatActivity { 
    Fruit fruit; 

    ... 

    public void randomFruit() { 
     fruit = new Fruit(); 
    } 

    public void sometimeLater() { 
     if (fruit.getFruitName == "apple"){ 
      // 
     } 
    } 
} 
+0

注:**オブジェクトの等価性をチェックするには '.equals(...)'メソッドを使用し、プリミティブの等価性をチェックするには '=='を使用します。 'if(fruit.getFruitName ==" apple ")'はあなたが思うことをしません。 –

+0

Javaにはグローバル変数やグローバルスコープはありません。パブリックなものを作ることはできますが、クラスやオブジェクトに関連付けられます。 – nasch

答えて

2

を読むことをお勧めしたい

Fruit fruit = 
    ThreadLocalRandom.current().nextBoolean() ? new Apple() : new Banana(); 

、あなたがFruitを定義するためのインタフェースを利用することができます:

インタフェースフルーツ{ 公共の文字列、このようなgetName(); public string getColor();

public static class FruitFarm { 
    public static Fruit pick { 
     return Math.random() > .5 ? new Apple() : new Banana(); 
    } 
} 

あなたは、単に呼び出すことができる、というたら:

Fruit = FruitFarm.pick(); 

をあなたを取得するにはあなたが、その後Fruitのランダムな部分を生成するための工場を作成することができます }

public class Apple implements Fruit { 
    public string getName() { return "Apple"; } 
    public string getColor() { return "Red"; } 
} 

public class Banana implements Fruit { 
    public string getName() { return "Banana"; } 
    public string getColor() { return "Yellow"; } 
} 

果物のランダムな部分(そしてあなたが受け取ったものを見つける方法を呼んでください)。

関連する問題