java - Android/Java : Multiple similar classes needing a super class, 不知道从哪里开始

标签 java android class subclass superclass

假设我有 2 个相似的类:

Apple.java

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

Banana.java

public class Apple {
    public string getFruitName(){
        return "Banana";
    }
    public string getFruitColor(){
        return "yellow";
    }
}

在我的应用程序中,我需要一个全局变量,这样我就可以在任何地方动态生成一个全局范围的香蕉或苹果。 问题是,我不知道生成的是哪个,可能是苹果,也可能是香蕉。

猜测我需要一个父类(super class),可能是 Fruit.java,并实例化一个名为 fruit 的全局变量。当我调用 fruit.getFruitName 和 fruit.getFruitColor 时,我希望返回一个苹果或香蕉,以随机生成的为准。我真的不知道如何给所有这些人一个父类。

我的应用示例

public class main extends AppCompatActivity {
    Fruit fruit;

    ...

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

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

最佳答案

你可以使用一个接口(interface)

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

然后只为苹果和香蕉实现它

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

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

然后您可以像这样将香蕉或苹果分配给 Fruit fruit:

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

我建议您阅读 "Inheritance" section of The Java™ Tutorials

关于java - Android/Java : Multiple similar classes needing a super class, 不知道从哪里开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110269/

相关文章:

java - 链接包 : Add three Circle objects into the LinkedBag

c# - 当另一个类只知道父类(super class)时,如何访问子类?

c++ - 我的复制构造函数有什么问题?

java - NatTable 布局格式

android - 我可以观察 Android 应用程序进程优先级的变化吗?

c# - 图分层布局算法

android - 对齐 TextView

java - 使用 Kotlin 在 Android 中的 UI 组件上声明的最佳方式是什么?

java - @XmlElementRef - 用于请求和响应的 JAXBElement 包装器

java - 内存不足异常 : When reading 11GB XML using simple groovy getting memory error but when reading using plain JAVA not error