对于具有公共静态的所有方法的实用程序类,正确的方法是什么。
我应该使用最终类还是抽象类?
请给建议。
例如:
public final class A{
public static void method(){
/* ... */
}
}
或者
public abstract class A{
public static void method(){
/* ... */
}
}
abstract
有自己的目的。如果您希望其他类 ( ) 实现某些类功能,override
则使用抽象。
如果它只是实用程序类,但您不希望其他类将其子类化,那么我会选择final
类。如果实用程序类只有static
方法,那么无论如何您都不能覆盖它们,因此将它们non-final
也放在类中并没有什么区别。
创建实用程序类的最佳方法。如果您不希望其他类继承它。
//final, because it's not supposed to be subclassed
public final class AlertUtils
{
// private constructor to avoid unnecessary instantiation of the class
private AlertUtils() {
}
public static ..(){}//other methods
}
final
这里比 更有意义abstract
。通过将类标记为final
,您禁止扩展类。另一方面,将类标记为abstract
相反,因为没有子类的抽象类没有多大意义。所以预计会延长。
使类最终并添加一个私有构造函数。(这就是喜欢java.lang.Math
使用的类)
public final class A {
private A() {}
public static void method() {
}
}
如果您希望其他类使用此类的功能,则将其设为抽象,否则将其设为Final
These are some guidelines I've found:
As you've asked, the class name cannot be abstract (not advisable) -> Which means you are planning to implement it in another class. If you want to prevent sub-classing, use final for the class name; If you want to prevent instantiation, use a private constructor.