在Java界面中,我怎么能*不*使用从父接口继承的一个特定方法?

Han*_*etz 3 java interface

我有三个接口的层次结构,祖父母,父母和孩子.父和子有一个方法"添加",这需要孩子不同的输入参数.虽然在子项中添加所需的签名没有问题,但是继承的方法将毫无意义,那么有没有办法在那里没有它?其他方法工作正常.

也许,为了实现我想要的,我可以完全改进设计,所以我将简要介绍接口的内容:

我收集由时间和价值组成的仪表读数.祖父母接口用于单个读取.我还有一些表示连续读数(一系列)的类,一个包含在同一时间段内运行的多个系列的类(让我们只调用一个表).

该表可以被视为一个系列(它将值与时间轴正交聚合),并且表和系列都可以被视为单个读数(实现提供不同的聚合方式),因此继承.这似乎很好,但对于add方法.(我可以在系列中添加一个单点,但是对于表格,我需要一个额外的参数来告诉我它属于哪个系列.)

Mic*_*rdt 9

不,你不能避免继承一个方法,因为这样做会违反Liskov替换原则.

在实践中,你可以让实现抛出一个UnsupportedOperationException,但那将是非常讨厌的.

你不能用系列的某种默认值实现继承的方法吗?


And*_*ite 6

也许将所有接口继承断开是有意义的.只需具体特定类型的行为接口.无论您实现这些接口的类都可以选择有意义的类,而不必担心实现无意义的方法.