インターフェイスと抽象クラスの違い【Java】

通常のクラスですと、いくつかフィールドや具象メソッドがあります。抽象クラスになると、少なくとも一つ以上の抽象メソッドが定義されます。

インターフェイスとは、クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したものです。

抽象クラス自身にはabstract修飾子をつけて、継承するクラスにはクラス名の後にextends 抽象クラス名 をつけます。多重継承はできません。

インターフェイス自身にはinterface修飾子をつけて、実装するクラスにはクラス名の後にimplements インターフェイス名 をつけます。複数実装する時は、「,」区切りで並べます。

 

試験対策として、タイトルの「インターフェイスと抽象クラスの違い」として、以下の件を覚えておきたいです。

 

インターフェイスにはインスタンスフィールドを定義できないが、抽象クラスには定義できる。

 

インターフェイスには protected なメソッドを定義できないが、抽象クラスには定義できる。