【问题标题】:Implementing interface with just one class or more classes只用一个类或多个类实现接口
【发布时间】:2013-12-14 14:40:36
【问题描述】:

也许它的答案对你们大多数人来说是显而易见的,但在实现接口时我有点困惑。

应该“只有一个实现类”实现“完整的方法集”吗? 外汇:

public class CCSImplementation implements CCS {

    public void addComment (int submissionId,int customerId, String comment, Date date)   { }

    public void addGeneralComplaint (int submissionId, int customerId, String description, Date date)  { }  
        and other methods…..}   

或者 - 更多的实现类如

public class Comment implements CCS {
    public void addComment() {}    
}

和

public class GeneralComplaints implements CCS {
    public void addGeneralComplaint(){}    
}

考虑到相关方法,部分实现接口? (---我在这样实现时出错了)

因为参考资料说

一个或多个类可以实现该接口...

正如我所说,我有点困惑。

【问题讨论】:

    标签: java inheritance interface abstract


    【解决方案1】:

    如果类是abstract,则不必实现所有/任何方法:

    public abstract class Comment implements CCS {
        public void addComment() {}
        // addGeneralComplaint() is implied as abstract    
    }
    

    根据您的需要,定义这样一个类是完全有效的,其中实现了一些方法,但留下子类来实现接口的其余方法。

    【讨论】:

    • 说我有20个方法要实现:
    • 公共抽象类评论实现CCS {
    • 应该包含 20 个方法,其中一些实现,其余的隐含为抽象?
    • @serb 如果类是抽象类,则不必包含任何方法或实现的接口
    • 我将在我更新的项目设计中使用您的建议。非常感谢。
    【解决方案2】:

    当非abstract 类实现接口时,它必须提供接口方法公开的所有的实现。

    如果我们有一个abstract class A,它可以在不提供接口公开方法的方法实现的情况下实现一个接口,因为默认情况下它们都是抽象的。但是当这个类被非abstract 类B 子类化时,子类必须提供接口公开的方法签名的实现。

    【讨论】:

    • 抽象类不必
    【解决方案3】:

    class Comment 应该扩展 Class GeneralComplaints

    或

    类 GeneralComplaints 应该扩展类 Comment..

    【讨论】:

      【解决方案4】:

      如果事实证明您使用的是抽象类,那么您不必使用所有内容。据我了解,如果您打算使用提供的方法,您只想实现某些东西。有人向我解释说,提供了一个接口,以便用户不会忘记在他们的类中使用方法。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 2017-05-29
        • 2018-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多