【发布时间】:2015-08-03 05:14:16
【问题描述】:
适时的问候:)
在 Java 中工作,我有一个接口 A。这个接口的所有实现者也扩展类 B,但 B 没有实现 A。在我们使用 A 的实例(引用为 A)的类中,它被强制转换为一个 B 引用,以便我们可以使用 B 类中定义的方法。从概念上讲,该方法也应该属于接口 A。
你能想出一个不将方法引入接口 A 的理由,这样我们就不必将它强制转换为 B 吗?我是否应该覆盖子类中的方法并只调用超级版本,以便在 IDE 等中更容易导航?
【问题讨论】:
-
为什么 B 没有实现 A?
-
我不知道这些类实际上是什么,但听起来可以通过重新设计整个系统来解决。
-
扔掉接口A,只用B类。
-
问题是你为什么不把这个方法介绍给A。答案是:在好的OOP设计中,你通常希望有小的接口,根据单一职责原则。如果您的接口定义的方法多于单一职责,请将其拆分为两个接口。
标签: java inheritance interface casting