0
0

More than 3 years have passed since last update.

Java基礎学習内容6(継承・抽象クラス・インタフェース)

Posted at

継承

既存クラスを元に新しいクラスを定義する。(元となるクラス=スーパークラス、新しく定義するクラス=サブクラス
この際、スーパークラスのメソッドやフィールドは受け継がれる。
※アクセス修飾子がprivate,修飾子なしのメソッド・フィールドにはアクセス不可
※複数のスーパークラスを継承する(多重継承)は不可(ただしサブクラスをスーパークラスとした継承は可)
※final修飾子のついたクラスは継承不可

継承
class SubClass extends SuperClass {
  ...
}

サブクラスでは、スーパークラスのメソッドの処理を上書きするオーバーライドが可能

オーバーライド
class SubClass extends SupreClass {
  @Override methodA() {
    super.methodA(); //既存メソッドの処理を実行
    ...
  }
}

オーバーライドするためには以下の条件を満たす必要がある。
・メソッド名、引数が同一であること
・戻り値は元メソッドと同じかサブクラスであること
・アクセス修飾子は元メソッドと同じかより公開範囲が広いこと
・final修飾子のついていないメソッドであること

抽象クラス

処理内容を定義しないメソッドを含むクラス。
※abstract修飾子はアクセス修飾子より後、class・戻り値の型より前に記述すること。
※abstractをつけたメソッドには{}を付けないこと。

抽象クラス
abstract class AbsClass {
  public abstract void methodA();
}

インタフェース

実装が必要なメソッドを定義したクラス。
※SE8からはデフォルトの実装とstaticメソッドが定義できるようになった。

インターフェイス
public interface InterfaceSampl(){
  public abstract void methodA();
  default void methodB(){
    ...
  }
}

※インターフェイスは多重継承が可能である。
※private,protectedなメソッドはコンパイルエラーとなる
※コンパイル時に暗黙でpublic abstractに変換される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0