抽象类和具有抽象所有方法的类有什么区别?

Alb*_*ore 15 java abstract-class

我不知道是什么样的之间在Java中的差异抽象类和具有它的所有方法的类抽象?我的意思是,抽象类只是一个类,其方法自动变为抽象

Jon*_*eet 22

绝对不.实际上,一个类可以是抽象的,没有任何方法是抽象的,尽管这是相对罕见的(参见下面Mark的评论中的一个例子).另一方面,如果一个类有任何抽象方法,那么它必须被声明为abstract.

一般来说,抽象类的目的是为骨架提供一些非抽象行为,但其他位仍由子类填充.例如,这可以与模板方法模式一起使用.

  • 我看到的没有抽象方法的抽象类的一些唯一有效用途是Swing中的GUI适配器类,如MouseAdapter:http://download.oracle.com/javase/6/docs/api/java/awt/事件/ MouseAdapter.html.该类的目的是提供一堆方法的默认无操作实现(但仍然实现!)以减少样板,但是按原样实例化类是没有意义的. (6认同)