gpt4 book ai didi

java - 在 Java 中强制实现抽象类的实例变量

转载 作者:行者123 更新时间:2023-12-01 23:04:50 26 4
gpt4 key购买 nike

我正在尝试设计一个抽象类,它将强制执行实例变量,即使该实例变量的类型在抽象级别未知。例如:

public abstract class AbstractDiet{
abstract void computeMeat()
abstract void computeVeggies()

}

public abstract class AbstractAnimal{
protected AbstractDiet diet;

}

然后我希望用户实现类似的东西:

public class Cat extends AbstractAnimal{
protected CatFoodDiet diet; // CatFoodDiet extends AbstractDiet

}

这是实现饮食变量的最佳方式吗?我想强制 AbstractDiet 的子类始终在 AbstractAnimal 的子类中实现。

最佳答案

首先:保持实例变量私有(private),并提供访问器方法。

第二:听起来您正在尝试定义一个接口(interface)。每当您想说“每种动物都有饮食”之类的内容时,请使用界面。

interface Animal {
Diet getDiet();
...
}

如果您愿意,您还可以融入 Bohemian 的想法,并使其通用。

interface Animal<D extends Diet> {
D getDiet();
...
}

这样,当需要定义不同种类的动物时,您将拥有最大的自由

class Cat implements Animal<CatDiet> {
CatDiet getDiet() { return...; }
}

关于java - 在 Java 中强制实现抽象类的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com