在抽象类中公开静态方法被认为是好事还是坏事

时间:2019-10-10 13:18:07

标签: java

我最近遇到了一些代码,其中在public static类中定义了abstract方法。我想知道这是否被视为良好做法或反模式?

我制作了一个简单的示例程序来说明我的意思。

public abstract class StaticMethodsInAbstractClassesStudy {

    public static int adder(int a, int b){
        return a + b;
    }

}

public class StaticMethodsInClassesStudy {

    public static void main(String [] args){

        System.out.println(StaticMethodsInAbstractClassesStudy.adder(2, 3));

    }
}

运行代码时,您得到5的结果,这证明我能够在abstract类内部运行代码。

我没有故意将extends添加到StaticMethodsInClassesStudy来强调这一点,即完全可以直接在abstract类内部运行代码而无需实例化扩展类。

我个人认为这是一种不好的做法,因为您将abstract类用作普通类,从而绕过了abstract类的 intent 。这些类型的方法不应该保存在单独的“普通” java类中,例如实用程序类?

2 个答案:

答案 0 :(得分:2)

这本身不是一个坏习惯,除非抽象类实际上不是要被子类化的,并且抽象仅用于防止实例化。对于仅提供静态实用程序的类,最佳实践是将其定型并具有私有构造函数。

答案 1 :(得分:0)

我同意您的观点,abstract类使我们想到在实例化之前不使用的东西。

允许在抽象类中插入一些支持方法而无需强制开发人员实现该类,这是有用的。

还可以在Interface中放置静态方法,而无需实现该接口即可使用它们。