Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 抽象クラス vs インターフェース | インターフェース
Java OOP

book抽象クラス 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に質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt