我最近遇到了一些代码,其中在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类中,例如实用程序类?
答案 0 :(得分:2)
这本身不是一个坏习惯,除非抽象类实际上不是要被子类化的,并且抽象仅用于防止实例化。对于仅提供静态实用程序的类,最佳实践是将其定型并具有私有构造函数。
答案 1 :(得分:0)
我同意您的观点,abstract
类使我们想到在实例化之前不使用的东西。
允许在抽象类中插入一些支持方法而无需强制开发人员实现该类,这是有用的。
还可以在Interface
中放置静态方法,而无需实现该接口即可使用它们。