我有三个接口的层次结构,祖父母,父母和孩子.父和子有一个方法"添加",这需要孩子不同的输入参数.虽然在子项中添加所需的签名没有问题,但是继承的方法将毫无意义,那么有没有办法在那里没有它?其他方法工作正常.
也许,为了实现我想要的,我可以完全改进设计,所以我将简要介绍接口的内容:
我收集由时间和价值组成的仪表读数.祖父母接口用于单个读取.我还有一些表示连续读数(一系列)的类,一个包含在同一时间段内运行的多个系列的类(让我们只调用一个表).
该表可以被视为一个系列(它将值与时间轴正交聚合),并且表和系列都可以被视为单个读数(实现提供不同的聚合方式),因此继承.这似乎很好,但对于add方法.(我可以在系列中添加一个单点,但是对于表格,我需要一个额外的参数来告诉我它属于哪个系列.)
不,你不能避免继承一个方法,因为这样做会违反Liskov替换原则.
在实践中,你可以让实现抛出一个UnsupportedOperationException,但那将是非常讨厌的.
你不能用系列的某种默认值实现继承的方法吗?