クラスとインターフェースはどちらも新しい参照型を作成するために使用されます。 クラスは、フィールドとフィールドを操作するメソッドの集合体である。 インタフェースは、完全に抽象的なメソッド、すなわち nobody を持つメソッドを持つ。
そこで、以下に示す比較表の助けを借りて、クラスとインターフェースの違いをもう少し学びましょう。 Class Vs Interface
- 比較表
- 定義
- 主な違い
- 結論
比較表
クラスの定義
クラスがなければJavaプログラムを実装できませんので、クラスはJavaプログラミングで最も重要な側面です。 クラスは参照型を作成し、これらの参照型はオブジェクトを作成するために使用されます。 クラスは署名と本体を持っています。 クラスのシグネチャは、クラスの名前と、そのクラスが他のクラスを継承しているかどうかを示す情報を持っています。 クラスのボディは、フィールドとそのフィールドを操作するメソッドを持ちます。 クラスは、キーワードclassを使って作成します。
class class_name{/*fields...methods*/}
クラスがインスタンス化されるとき、作成される各オブジェクトにはフィールドとメソッドのコピーが含まれます。 クラス内で宣言されたフィールドとメンバーは、静的または非静的であることができます。
クラスのメンバは、ユーザまたはサブクラスに対するメンバの可視性とアクセス性を決定するアクセス指定子を持っている。 アクセス指定子にはpublic、private、protectedがある。 クラスは、スーパークラス(継承クラス)のメンバのサブクラス(継承クラス)での可視性を決定するアクセス指定子を使用して、他のクラスによって継承されることができます。
インタフェースの定義
インタフェースもJavaで定義されている参照型の一つである。 インターフェイスの重要性は、Javaではクラスは1つのクラスしか継承できないことである。 この制限を避けるために、Javaの設計者はインタフェースの概念を導入した。 インターフェイスは構文的にはクラスと似ていますが、フィールドの宣言がなく、 インターフェイス内のメソッドは実装を持ちません。 インターフェイスはキーワードinterfaceを使って宣言します。
interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}
インターフェースは操作するフィールドを持たないため、その内部で宣言されたメソッドを定義しません。 インターフェイス内のどのメソッドも動作を行わないので、インターフェイスは決してインスタンス化できない。 もしインターフェイスがフィールドを持つならば、宣言時に初期化されなければなりません。 初期化するフィールドメンバがないため、コンストラクタを含むことはありません。
一度作成されたインタフェースは、キーワード implements を使用して任意の数のクラスによって実装することができます。 しかし、インターフェイスを実装するクラスはインターフェイス内のすべてのメソッドを定義しなければなりません。 また、インターフェイスはextendキーワードを使って他のインターフェイスを継承することもできます。 もしあるクラスが他のインタフェースを継承するインタフェースを実装した場合、 そのクラスはそのインタフェースを継承するメソッドを定義しなければなりません。 その場合、クラスは連鎖的に現れる両方のインターフェースのメソッドを定義しなければなりません。
Key Differences Between Class and Interface in Java
- クラスはオブジェクトを作成することでインスタンス化することが可能です。 インターフェイスは、インターフェイス内で宣言されたメソッドが抽象的であり、何のアクションも実行しないため、インスタンス化されることはありません。
- クラスのメンバはpublic, private, protectedのようなアクセス指定子を持つことができる。
- クラス内のメソッドは、そのクラスで宣言されたフィールドに対してアクションを実行するために定義されます。
- クラスは任意の数のインターフェースを実装できるが、拡張できるのは1つのスーパークラスだけである。
- クラスには変数を初期化するためのコンストラクタが定義されている。 しかし、インタフェースは初期化されるフィールドがないため、コンストラクタを持ちません。
まとめ
クラスとインターフェースにはそれぞれ重要な点があります。 クラスは、タスクがどのように行われるかを定義する必要がある場合に使用される。 インターフェースは、どのようなタスクが実行されなければならないかを知る必要があるときに使用されます。