java – 扩展类和具有相同方法名称的实现接口


Java中,如果我有一个扩展ClassX并实现InterfaceY的ClassA,并且ClassX和InterfaceY都有一个方法C(),那么为什么我不必在ClassA中给出methodC()的实现呢?它是某种方法重载? 最佳答案 因为如果ClassX具有methodC()的实现并且ClassA扩展了ClassX,那么ClassA确实具有methodC()的实现–ClassX的实现.

如果ClassA有自己的methodC()实现,那将被称为方法覆盖–ClassA的实现将覆盖其超类(ClassX)的实现.

重载完全是一个不同的问题:当一个类有多个具有相同名称/返回类型的方法时,会发生重载,这些方法采用不同的参数.当您希望能够使用不同的输入执行相同或类似的操作时,这非常有用,并且它与覆盖无关,当您拥有特定方法的实现需要与特定方法的实现不同的子类时,这非常有用.它的超级.

有关它们之间差异的有用讨论,请参见here.

点赞