我正在浏览一些Java代码,我看到很多抽象类中不包含任何内容。
例如,像这样的东西 -
public abstract class Processor
{
}
不过,它们有具体的实现类。在什么情况下,这样的抽象类才有意义?
IMO,当您想要创建一个基类时,抽象类优先于接口,该基类具有所有子类共有的行为和状态。我不确定空抽象类比接口更有用的任何情况。通常,标记接口是空的接口。
当您有一些逻辑对所有可能的实现类都是通用的时,将使用Abstract
类。
编写一个内部没有任何内容和扩展它的不同类的Abstract class
几乎是无用的。唯一的difference
是,您可以对所有具体类使用相同的handle
。
一种情况是,如果你不希望使用new
关键字实例化你的类,那么你可以定义它是抽象的。
在某些库中,他们将使用反射来查找这些标记抽象类的实现。此外,这是通过抽象类名本身为您的代码提供的文档。