抽象クラス vs インターフェース
メニューを表示するにはスワイプしてください
どちらを選ぶべきか
前の章から、abstract classes(抽象クラス)とinterfaces(インターフェース)は非常に似ていることに気付いたかもしれません。しかし、両者には違いがあります。結論から言うと、実際にはインターフェースが抽象クラスよりも好まれることが多いと言えます。なぜそうなのかを理解しましょう。
違いについて
まず、抽象クラスとインターフェースの違いを理解する必要があります。以下のリストで確認しましょう:
- 構文:抽象クラスを宣言する際は
abstract class、インターフェースを宣言する際はinterfaceを使用; - 継承キーワード:抽象クラスの継承には
extends、インターフェースの継承にはimplementsを使用; - サブクラスの呼称:
abstract classのサブクラスはサブクラスまたは継承クラスと呼ばれ、interfaceのサブクラスはクラス - 実装と呼ばれる; - 継承数:1つの抽象クラスのみ継承可能だが、複数のインターフェースを継承可能;
abstract classは実装済みメソッドと抽象メソッドの両方を持つことができる。Java 8以降、インターフェースもdefaultメソッドを持つことができる(このセクションで後述);- 抽象クラスのメソッドは任意のアクセス修飾子を持てるが、インターフェースでは
publicアクセス修飾子のみ許可される。
Note
抽象クラスを継承しつつ、同時にインターフェースを実装することも可能です。まず
extendsキーワードを使い、その後にimplementsを使います。構文は次のようになります:class ClassName extends AbstractClass implements Interface {}
簡単に言えば、抽象クラスは一部の機能を提供し、特定のルールを強制しつつ、一部の実装をサブクラスに任せるクラスです。一方、インターフェースはクラスが満たすべきチェックリストのようなもので、どのメソッドを持つべきかを指定しますが、実際のコードは提供しません。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 3. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 3. 章 3