【发布时间】:2018-07-20 14:20:31
【问题描述】:
考虑这个基类:
public class Cat {
public void meow() {
// meowing
}
}
由于某些原因,cats 子类不能继承自 Cat 类,因为它们必须继承自另一个基类,而 Java 不支持多重继承。因此:
public class Cat1 extends BaseClass1 {
}
public class Cat2 extends BaseClass2 {
}
public class Cat3 extends BaseClass3 {
}
如何动态扩充CatX 类的实例以从Cat 类继承meow 方法?
伪代码可能是:
public cat1Instance = new Cat1();
Cat.augmentWithCatBehavior(cat1Instance);
我有办法做到这一点吗?
更新:构图不是我想要的。对于组合,我需要在我的所有Cat1 到CatN 类中都有一个Cat 类的实例。我必须在每个类中创建一个包装器方法,以便我可以调用它meow。这是大量的样板代码。这就是为什么我说动态增强。
【问题讨论】:
-
组合是一种解决方案,而不是唯一的解决方案。我们需要一个更好的示例来说明您需要实现什么才能提供更准确的解决方案。
-
那你使用了错误的语言。简单明了。
-
Java 8 支持接口中的默认方法。如果您将
Cat类更改为接口,并将meow()方法更改为接口中的默认方法,则每个CatN类都可以实现Cat接口。这近似于 Java 中的多重继承。参考:dzone.com/articles/interface-default-methods-java -
从您上次的评论来看,我认为这不是问题所在。我要求您提供有关您的问题的更多信息,而您唯一要做的就是等待更多答案。说真的:如果您提供更多数据或者您想要实现的目标的示例,我们可以提供更多信息并更好地帮助您。考虑到我们不知道你有什么,你维护什么样的代码,也不知道这样的事情......
-
随便你说什么,但请添加一个你需要的例子,就这样:)
标签: java