Java中没有父类型的继承类

时间:2018-09-25 09:32:30

标签: java inheritance types

如何在不采用父类型的情况下从另一个类继承?

例如,我希望能够让Car采用Vehicle的所有方法和属性而不会被识别为类型Vehicle的对象。

在Java中是否有一种简便的方法,而无需重复所有方法和属性?

5 个答案:

答案 0 :(得分:6)

这取决于您对便捷性的定义。您实际上是在寻找 Forwarding /合成/聚合,

class B {
  A a;
  T foo() { return a.foo(); }
}

这意味着A中定义的所有方法都必须在B中重复。

关于Inheritance vs. Aggregation的讨论经常提到这一点。

答案 1 :(得分:3)

我认为您想做的是使用委托模式,使用本机Java没有简单的方法,可以使用project Lombok Delegate使其真正方便。

答案 2 :(得分:2)

如果“汽车”和“车辆”是从共同的专利继承而来的,那么它们将具有相同的方法,而“汽车”不是“车辆”并且没有重复。

答案 3 :(得分:0)

很难使用像Javassist这样的危害字节码的反向库。 这里有一些使用javassist操作Java类文件的示例

http://www.javassist.org/tutorial/tutorial2.html#intro

答案 4 :(得分:0)

如果您使用的是Spring Framework,则可以为此目的定义抽象bean https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-child-bean-definitions