抽象方法的标准可见性

Sal*_*Sal 8 java

这似乎是一个愚蠢的问题,但我想知道创建抽象方法时的"最佳实践".他们的知名度应该公开还是受到保护

即使实现抽象方法的子类是公共的,是否仍然建议保持抽象方法受到保护?

Jef*_*rey 11

取决于您的用例.如果抽象方法只实现了抽象类中的公共方法可用的某些更强大的功能,那么它应该受到保护.如果它是一个可以/应该从另一个类调用的独立方法,请将其公开.

例子:

public abstract class Foo implements Closeable {
    public final void close() {
        // do whatever
        doClose();
    }

    protected abstract void doClose();
}

public abstract class Bar {
    public void read(byte[] b) {
        for(int x = 0; x < b.length; x++) {
            b[x] = read();
        }
    }

    public abstract int read();
}
Run Code Online (Sandbox Code Playgroud)