接口和抽象(或超级)类方法之间的偏好

时间:2012-08-03 02:26:29

标签: java interface superclass

我有一个问题: 在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() {

    }
}

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

2 个答案:

答案 0 :(得分:2)

在这种情况下从来没有任何冲突 - 因为接口不包含实现,所以只能有一个(超类)实现继承。

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

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

答案 1 :(得分:0)

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

不考虑接口,因为它们仅提供功能签名的合同而不提供功能。