您可以为动物类(生物学意义上的类)创建接口,例如用于马和鸟类(我不是生物学家,因此这些术语可能是错误的)。public interface Equidae
public interface Avialae
然后,您仍然可以创建一个
public class Bird implements Avialae {
}
和
public class Horse implements Equidae {}
以及
public class Pegasus implements Avialae, Equidae {}
从评论中添加:
为了减少重复代码,您可以创建一个抽象类,其中包含要实现的动物的大多数公共代码。
public abstract class AbstractHorse implements Equidae {}
public class Horse extends AbstractHorse {}
public class Pegasus extends AbstractHorse implements Avialae {}
更新
我想再补充一个细节。正如布莱恩所说,这是OP已经知道的事情。
但是,我想强调的是,我建议绕过接口的“多继承”问题,我不建议使用已经代表具体类型(如Bird)的接口,而是更多地代表一种行为(其他人指的是鸭子类型,这也很好,但我的意思是:鸟类的生物学类,Avialae)。我也不建议使用以大写字母“I”开头的接口名称,例如 ,这并不能说明为什么需要接口。这与问题的不同之处在于:使用接口构造继承层次结构,在有用时使用抽象类,在需要时实现具体类,并在适当时使用委派。IBird