我可以在Java8中使用接口继承属性吗?

我可以在Java8中使用接口继承属性吗?,java,Java,我有4门课:“石头”、“海藻”、“水刺”和“长矛”,每一门课都继承了前一门课的属性 类“石头”有座标,一类“海草”在座标上加上了寿命和生长速度,以及新海草的诞生(旧海草的划分),在“斯普拉茨”中加上了吃海草的方法 我应该使用普通的java类来表示这种继承,还是有其他方法来表示这种继承?在这种情况下,当两个对象之间在语义上没有真正的关系时,我不建议直接使用类继承 如果您希望表达这样一个事实,即这些类在其行为的某些方面有共同之处,那么您可能希望使用表示这些属性集的接口。这是因为一个类可以实现多个接口

我有4门课:“石头”、“海藻”、“水刺”和“长矛”,每一门课都继承了前一门课的属性

类“石头”有座标,一类“海草”在座标上加上了寿命和生长速度,以及新海草的诞生(旧海草的划分),在“斯普拉茨”中加上了吃海草的方法


我应该使用普通的java类来表示这种继承,还是有其他方法来表示这种继承?

在这种情况下,当两个对象之间在语义上没有真正的关系时,我不建议直接使用类继承

如果您希望表达这样一个事实,即这些类在其行为的某些方面有共同之处,那么您可能希望使用表示这些属性集的接口。这是因为一个类可以实现多个接口,所以您可以选择在每个类中实现哪个接口。这也引入了更大的灵活性,因为不需要对不同的、不严格相关的功能进行线性排序

你本来可以

public interface WorldObject {...}
public interface Organism extends WorldObject {...}
public interface Plant extends Organism {...}
public interface Animal extends Organism {...}
public interface Eater<T> {...}

public class Stone implements WorldObject {...}
public class Seaweed implements Plant {...}
public class Sprat implements Animal, Eater<Seaweed> {...}
公共接口WorldObject{…}
公共接口{…}
公共界面植物扩展生物{…}
公共接口{…}
公共接口创建程序{…}
公共类石器世界对象{…}
公共类海藻植物{…}
公共类Sprat实现动物,食客{…}

等等。

组合是继承的好选择

因此,您将拥有额外的类,如
坐标
生活方式
消费者

并定义您的类

class Stone{
Coordinates coordinates;
}

class Seaweed{
Coordinates coordinates;
LifeStyle lifestyle;
}

class Sprats{
Coordinates coordinates;
LifeStyle lifestyle;
List<Consumer<?>> consumers;
}
类石头{
坐标;
}
等级海藻{
坐标;
生活方式;
}
斯普拉茨级{
坐标;
生活方式;

你能让UML图表演示你想要达到什么吗?首先你应该阅读界面第二步:请给我们展示你的代码/UML图,这样我们就可以描绘出你所要达到的目标:海藻是如何变成石头的?这听起来不像继承在这里是合适的。坐标。石头和海藻各有一个位置。