継承
継承とは
以前作ったことのあるクラスと似通ったクラスを作る
コピペで作ると・・・
デメリット
1 追加・修正が大変
2 管理・把握が大変
継承したクラス
extendesというキーワードを使う
書き方
class クラス名 extends もとになるクラス{
親クラスとの差分メンバ(属性・操作)
}
差分だけでいいのは親クラスのメンバを引き継いでいるから
継承関係
継承してできた新しいクラスには、「継承関係」という
関係性ができる
もとになったクラス→親クラス(スーパークラス)
新しくできたクラス→子クラス(サブクラス)
継承の禁止事項
親クラスから見ると複数の子クラスを持つことはできるが
子クラスが複数の親は持てない
→多重継承の禁止
オーバーライド(上書定義)
継承のメンバを上書き更新する方法
オーバーライドの条件
1 継承関係であること
2 同名メソッド(シグネチャが同一)が親クラスにあること
※シグネチャ→引数の型・引数の個数・メソッド名の総称
戻り値の型
つまり・・・
親クラスに同じメンバがなければ「追加」
親クラスに同じメンバがあれば「上書き」
※親クラスの実行したい時はsuper.メソッド名でできる
継承の禁止にする方法
→finalを使う
(ex)
final void waru();
public final class Kanagata{}
コンストラクタ
→「属するクラス名と同じでなくてはいけない」というルールがあるので・・・
継承することができない
「継承すると必ず親クラスのインスタンス生成を行う」というルールがある
親クラスのコンストラクタ呼び出しが書かれていない場合は、
その呼び出し処理が自動的に用意される
書き方:super(引数);
これが自動的に挿入される
※コンストラクタの1行目にしか親クラスの呼び出しは書けない
引数がある時は自分で書かないとダメ・・・
自動追加はあくまで引数なしのもの
引数ありなしは合わせること