抽象类和具有所有方法抽象的类之间有什么区别?
2022-09-03 13:15:37
我想知道Java中抽象类和具有所有方法抽象的类之间的区别是什么?我的意思是,抽象类只是一个其方法自动获得抽象的类吗?
我想知道Java中抽象类和具有所有方法抽象的类之间的区别是什么?我的意思是,抽象类只是一个其方法自动获得抽象的类吗?
绝对不行。事实上,一个类可以是抽象的,没有任何方法是抽象的,尽管这种情况相对罕见(参见下面的Mark的评论作为示例)。另一方面,如果一个类有任何抽象方法,那么它必须被声明为抽象。
一般来说,抽象类的目的是为一个具有一些非抽象行为的骨架,但其他位仍然需要由子类填充。例如,这可以与模板方法模式一起使用。
任何包含一个或多个抽象方法的类也必须声明为 abstract。若要声明类抽象,只需在类声明的开头使用 class 关键字前面的 abstract 关键字。不能有抽象类的对象。也就是说,抽象类不能使用 new 运算符直接实例化。这样的对象将是无用的,因为抽象类没有完全定义。此外,不能声明抽象构造函数或抽象静态方法。抽象类的任何子类都必须实现超类中的所有抽象方法,或者本身声明为抽象。