java 継承

*子に対して親は1つのみ

クラスを拡張する

既存のクラスをもとに新しいクラスを作成

class サブクラス名 extends クラス名{ 処理 }

コンストラク

オーバーライド

  • スーパークラスとサブクラスで全く同じメソッド名・引数リストを持つメソッド
  • サブクラスのメソッドが呼び出される(サブクラスのメソッドがスーパークラスのメソッドにかわって機能する)

オーバーライドの動き

サブクラス名 変数 = new サブクラス名(); // サブクラスのメソッドが機能

オブジェクトをさす変数のクラスとオブジェクト自身のクラス両方がサブクラスの場合サブクラスのメソッドが機能

スーパークラス名 変数 = new サブクラス名(); // サブクラスのメソッドが機能

変数のクラスがスーパークラスでオブジェクトのクラスがサブクラスの場合サブクラスのメソッドが機能

*共通のメソッド(オーバーライド)のみサブクラスのメソッドを呼び出せる / その他はスーパークラスのみ呼び出される

クラス名 変数 = new クラス名(); // スーパークラスのメソッドが機能

変数のクラスとオブジェクトのクラス両方がスーパークラスの場合はスーパークラスのメソッドが機能

final

finalをつけると変更不可になる

クラスにfinalをつけるとサブクラスを作れない( 拡張不可 )

final class クラス名

フィールド変数にfinalをつけると値は変更不可になる( 定数 constant )

static final 型 変数名 = 値;

スーパークラスでメソッドにfinalをつけるとサブクラスで全く同じメソッドを作成してもオーバーライドされない

public final void メソッド名(){ 実行処理   }