1

我有一个问题:在 Java 中,我有一个 Fresher 类,它扩展了 Employee 并实现了一个接口 IFresher。请参考下面的代码。

public interface IFresher {
        // Some other stuff
    public void takeCall();
}



public class Employee extends Human {
        // Some other stuff
    public abstract void takeCall()
       {
          // Some basic implementation
       }

}

class  Fresher extends Employee implements IFresher
{
        @Override
    public void takeCall() {

    }
}

问题:Fresher 子类中实现了哪个 takeCall() 方法,是来自接口还是超类,在这种情况下,当超类和接口之间存在冲突时,遵循的层次结构顺序是什么?

4

2 回答 2

2

在这种情况下永远不会有任何冲突——因为接口不包含实现,所以只能有一个(超类)实现可以继承。

Fresher 将从 Employee 继承实现(在这种情况下覆盖 takeCall 方法)。但它也将成功实现 IFresher,因为它具有正确签名的功能。

(除此之外:这是 Java 中不允许多重实现继承的主要原因,定义它应该如何工作变得非常棘手)

于 2012-08-03T02:30:05.167 回答
0

在您的情况下, Fresher 优先,特别是因为您明确覆盖。

不考虑接口,因为它们只为函数签名提供合同,没有功能。

于 2012-08-03T02:29:34.460 回答