継承

継承とは

以前作ったことのあるクラスと似通ったクラスを作る

 

コピペで作ると・・・

デメリット

1 追加・修正が大変

2 管理・把握が大変

 

継承したクラス

extendesというキーワードを使う

書き方

class クラス名 extends もとになるクラス{

     親クラスとの差分メンバ(属性・操作)

}

差分だけでいいのは親クラスのメンバを引き継いでいるから

 

継承関係

継承してできた新しいクラスには、「継承関係」という

関係性ができる

もとになったクラス→親クラス(スーパークラス

新しくできたクラス→子クラス(サブクラス)

 

継承の禁止事項

親クラスから見ると複数の子クラスを持つことはできるが

子クラスが複数の親は持てない

多重継承の禁止

 

オーバーライド(上書定義)

継承のメンバを上書き更新する方法

 

オーバーライドの条件

1 継承関係であること

2 同名メソッド(シグネチャが同一)が親クラスにあること

シグネチャ→引数の型・引数の個数・メソッド名の総称

戻り値の型

つまり・・・

親クラスに同じメンバがなければ「追加」

親クラスに同じメンバがあれば「上書き」

親クラスの実行したい時はsuper.メソッド名でできる

継承の禁止にする方法

→finalを使う

(ex)

final void waru();

public final class Kanagata{}

 

コンストラク

→「属するクラス名と同じでなくてはいけない」というルールがあるので・・・

継承することができない

「継承すると必ず親クラスのインスタンス生成を行う」というルールがある

親クラスのコンストラクタ呼び出しが書かれていない場合は、

その呼び出し処理が自動的に用意される

書き方:super(引数);

これが自動的に挿入される

※コンストラクタの1行目にしか親クラスの呼び出しは書けない

引数がある時は自分で書かないとダメ・・・

自動追加はあくまで引数なしのもの

引数ありなしは合わせること