假设有一个Flower抽象类,它可以来自SUMMER,SPRING或ALL_SEASONS类型。现在,像紫罗兰这样的花朵可以成为夏季或春季两个季节。如何用Java表示呢?我首先尝试使用Enums来实现它,但此刻陷入困境。
答案 0 :(得分:2)
根据您对帖子的要求, 您不需要三个季节。 相反,您需要“开花季节”。 “开花季节”列表似乎是“夏天”, 弹簧, SUMMER_AND_SPRING, ANY_SEASON。
请考虑以下内容:
根据您的信息, 您似乎反向执行了这些步骤 (先建立解决方案,然后查看需求)。
答案 1 :(得分:0)
您的需要是实施一个有季节的Flower类, 我实施了一个解决方案,虽然不是最好的,但是它揭示了OOP继承的基本机制和枚举,希望它会为您提供帮助
首先,季节枚举
public enum Season{
SUMMER, SPRING, WINTER, AUTUMN;
public static List<Season> allSeason(){
return Arrays.asList(values());
}
}
下一个抽象类Flower
public abstract class Flower {
abstract List<Season> seasons();
}
然后是两个扩展Flower的类,必须定义季节行为
class Poppy extends Flower{
@Override
List<Season> seasons() {
return Arrays.asList(Season.SPRING, Season.SUMMER);
}
}
class Anthurium extends Flower{
@Override
List<Season> seasons() {
return Season.allSeason();
}
}