Javaの基本比較問題
Javaにおける「抽象クラス(abstract class)」と「インタフェース(interface)」の違いとして正しいものはどれですか?
A.抽象クラスはインスタンスを生成できるが、インタフェースはインスタンスを生成できない
✗ 誤りです。抽象クラスもインタフェースもインスタンスを直接生成することはできません。
B.抽象クラスはコンストラクタやフィールドを持てるが、インタフェースは複数実装(implements)が可能である← 正解
✓ 正解です。抽象クラスはコンストラクタやインスタンスフィールドを持てますが、インタフェースは1クラスで複数実装可能です。
C.インタフェースは1つのクラスしか実装できないが、抽象クラスは複数継承できる
✗ 逆です。インタフェースは複数を実装できますが、クラスの継承(extends)はJavaでは単一継承のみです。
D.抽象クラスはメソッドを一切持てないが、インタフェースはすべてのメソッドに実装を持てる
✗ 誤りです。抽象クラスは具体的なメソッドも持てます。またインタフェースのメソッドはデフォルトでは実装を持ちません。