我有一个问题: 在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子类中实现,是来自接口还是超类, 在超类和接口之间存在冲突时,在这种情况下遵循的层次结构顺序是什么?
答案 0 :(得分:2)
在这种情况下从来没有任何冲突 - 因为接口不包含实现,所以只能有一个(超类)实现继承。
Fresher将从Employee继承实现(在这种情况下覆盖takeCall方法)。但它也将成功实现IFresher,因为它具有正确签名的功能。
(旁白:这是Java中不允许多个实现继承的主要原因,定义它应该如何工作变得非常棘手)
答案 1 :(得分:0)
在您的情况下,Fresher优先,特别是因为您明确覆盖。
不考虑接口,因为它们仅提供功能签名的合同而不提供功能。