创建新的抽象方法与接口方法

Chr*_*ski 6 java interface abstract-methods

问:如果要在未链接到接口的抽象类中创建抽象方法,您是否仍遵循Program to the Interface的原则?

我已经为我创建的所有UI类使用了一个接口; 但是,鉴于接口的原因,我没有看到与我想要创建的抽象方法和现有接口的直接关联.

通常,我只是创建抽象方法并完成; 但是,我想知道我是否违反了程序到接口的设计原则.

问:我应该为此创建另一个接口还是坚持使用抽象方法?

注意:这不是接口与抽象类问题.

public abstract class BaseClass extends Clazz implements Interface {

    // 1 out of 4 interface methods are implemented here
    CustomObj getMode() { ... }

    // I am actually also thinking of taking that 1 method - getMode() - out of the 
    //     interface and implementing it as an implemented method without an interface. 

    // Method that made me ask this question!!
    abstract CustomObj getDefaultMode();    // Not related to the interface - Interface

}


public interface Interface {

    String getFirstNumber();
    String getSecondNumber();

    CustomObj getMode();  // This one is implemented in the BaseClass, but I think it no longer belongs in this role

    // CustomObj getDefaultMode();  // This one is not in Interface, but makes be believe I need a new Interface or just have them declared in an Abstract Class.

}
Run Code Online (Sandbox Code Playgroud)

注意:My Base类更多用于简化具体类中的代码.基类处理一些重写的​​方法,辅助方法,初始化等...所以它不像接口那样,而是作为标准的抽象类.

biz*_*lop 1

我认为这个问题的措辞过于抽象,无法给出明确的是或否的答案。

一般来说,抽象类没有什么问题。问题在于人们滥用它们。我们如何定义滥用?或者更确切地说,抽象类的正确用途是什么?

为此,我们必须记住,面向对象是一种对“现实世界”进行建模的方式:好的设计提供易于理解的模型,而糟糕的设计则很难遵循。此外,好的面向对象设计也可以扩展到建模问题可能扩展的方向。(显然我不是在谈论关键字extends。)

抽象方法的意思是:如果没有这个方法,该类中声明的其他方法就没有意义。而接口所说的是,要成为 X,你至少需要这些方法。

因此,虽然抽象方法是表达实现需求的一种方式,但接口定义了任何实现它的人都可以扮演的角色。

有时您需要其中之一,有时您需要另一个。