【问题标题】:Preference between Interface and Abstract (or Super) class method接口和抽象(或超)类方法之间的偏好
【发布时间】:2012-08-03 02:26:28
【问题描述】:

我有一个问题: 在 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() 方法,是来自接口还是超类, 当超类和接口发生冲突时,这种情况下的层次顺序是什么?

【问题讨论】:

标签: java interface superclass


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答和澄清,但就多重实现继承的考虑,您能否为上述案例提出更好的设计?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2017-10-12
    • 1970-01-01
    • 2017-11-15
    • 2013-05-08
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多