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

时间:2014-05-30 03:26:01

标签: java inheritance

在Java中,如果我有ClassA扩展ClassX并实现InterfaceYClassXInterfaceY都有{{1}那么为什么我不必在methodC()中提供methodC()的实现?它是某种方法重载吗?

2 个答案:

答案 0 :(得分:2)

因为如果ClassX的实施methodC()ClassA延伸ClassX,那么ClassA 确实的实施methodC() - ClassX的实施。

如果ClassA拥有自己methodC()的实现,则称为方法覆盖 - ClassA的实施方式覆盖其超类(ClassX)的实现。

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

请参阅here,了解有关它们之间差异的有用讨论。

答案 1 :(得分:0)

非常简单,

实际上,当您扩展该类时,所有非私有属性和方法都会继承到子类。

所以在你的情况下

class X{

//method C implemented here
}

interface Y{
//method c declaration
}

class A extends X implements Y{
//method C implemented here comes from class X
}

所以不需要再提供它。