abstract有自己的目的。如果您希望其他类(
override)实现某些类功能,则可以使用abstract。
如果它只是实用程序类,但是您不希望其他类将其子类化,那么我将选择
final类。如果实用程序类只有
static方法,则您无法以任何方式覆盖它们,因此将它们
non-final也包含在类中也没有区别。

abstract有自己的目的。如果您希望其他类(
override)实现某些类功能,则可以使用abstract。
如果它只是实用程序类,但是您不希望其他类将其子类化,那么我将选择
final类。如果实用程序类只有
static方法,则您无法以任何方式覆盖它们,因此将它们
non-final也包含在类中也没有区别。