オブジェクト指向の基礎比較問題
Javaにおける「抽象クラス(abstract class)」と「インターフェース(interface)」の最も重要な違いはどれですか?
A.抽象クラスはフィールドを持つことができますが、インターフェースは持つことができません
✗ 誤りです。Java8以降、インターフェースもstaticフィールドを持つことができます
B.インターフェースは複数実装できますが、抽象クラスは単一継承のみです← 正解
✓ 正解です。インターフェースは複数実装(implements)が可能ですが、抽象クラスの継承は単一のみです
C.抽象クラスはコンストラクタを持つことができますが、インターフェースは持つことができません
✗ 誤りです。抽象クラスはコンストラクタを持つことができます。インターフェースのみ持つことができません
D.インターフェースは具体的な実装を持つメソッドを定義できますが、抽象クラスは定義できません
✗ 誤りです。Java8以降、インターフェースもdefaultメソッドで具体的な実装を持つことができます