为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清。
可以说我有类Animal此有子类Bird和Horse我需要做一个类Pegasus,从扩展Bird和Horse自Pegasus既是一只鸟和一匹马。
Animal
Bird
Horse
Pegasus
我认为这是经典的钻石问题。从我能理解经典的方式来解决,这是使Animal,Bird和Horse类接口,并实现Pegasus从他们。
我想知道是否还有另一种方法可以解决仍然可以为鸟和马创建对象的问题。如果有一种能够创造动物的方法,那也很棒,但不是必须的。
你可以为动物类(生物学意义上的类),例如public interface Equidae马和public interface Avialae鸟(我不是生物学家,所以术语可能是错误的)创建接口。
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 {}