Java:接口与抽象类(关于字段)

Chr*_*ris 10 java abstract-class accessibility field interface

根据我收集的内容,我想强制一个类使用特定的私有字段(和方法)我需要一个抽象类,因为接口只声明public/static/final字段和方法.正确??

我刚开始我的第一个大型java项目,并希望确保我以后不会伤害自己:)

Bom*_*mbe 20

您不希望强制使用某些私有字段或方法.一般来说,你不关心实现,你关心接口.因此,在几个接口中定义几个方法(取决于您需要多少)并定义实现它们的类.这可能会在将来伤害到你.

  • +1我很惊讶这个问题有很多字面的答案,而你是唯一一个解决问题背后的错误假设的人. (4认同)

Ric*_*ell 20

提供这两者是相当普遍的,所以你最终得到:

public interface Sendable {
    public void sendMe();
}
Run Code Online (Sandbox Code Playgroud)

public abstract class AbstractSender implements Sendable {
    public abstract void send();

    public void sendMe() {
        send(this.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,任何对抽象类中的默认实现感到满意的人都可以快速子类化它而无需重写大量代码,但是任何需要执行更复杂操作(或者需要从不同基类继承)的人仍然可以实现界面和即插即用.