Java继承:父类中的空方法

时间:2019-03-08 19:22:40

标签: java inheritance polymorphism

我想知道在父类中是否有一个空函数供子类重写是否需要吗?我个人认为下面的用例是合理的-

class Foo {

    void performAdditionalChecksIfNeeded(String decrypted) {
    }

    void validate(String encrypted) {
        final String decrypted = decryptIfProperlyEncrypted(encrypted);
        performAdditionalChecksIfNeeded(decrypted);
    }
}

class Bar extends Foo {
    @override
    void performAdditionalChecksIfNeeded(String decrypted) {
        // Additional validation logic
    }
}

我知道Bar类可以简单地重写validate()并调用super.validate()来消除对Foo中空函数的需要。之所以如此安排代码,是因为decryptIfProperlyEncrypted使用了一个我只想保留在Foo类中的库,这是由于关注点,性能关注点(解密)和避免代码重复的分离。换句话说,如果performAdditionalChecksIfNeeded中不存在Foo,我将不得不在Bar中再次执行解密。

1 个答案:

答案 0 :(得分:0)

在这种情况下,为什么不使用合成而不是继承? Foo类似乎唯一要做的就是解密。我会在Bar类中将其用作依赖项。