http://www.xmlpro.org/ ↑ 講義資料のダウンロードは ↑ ブログの「講義資料」から 第8回 継承 参考書:スッキリわかるJava入門 第2版 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 実演 実演 実演 実演 実演 「剣士」と「重剣士」の違い • usingShield • moveメソッドの処理 • switchShieldメソッド 継承 元となるクラスを1つだけ選び、 それとの差分だけを記述して新たなクラスを定義する機能 継承のやり方 アクセス修飾子 class クラス名 extends 元となるクラス名{ 元となるクラスとの「差分」メンバ } 「剣士」と「重剣士」の違い • usingShield ←差分(新たなフィールド) • moveメソッドの処理 ←差分? • switchShieldメソッド ←差分(新たなメソッド) オーバーライド 親クラスのメンバを子クラス側で上書きすること 実演 実演 再掲 再掲 名前 対応する修飾子 private private package private (何も書かない) アクセス可能範囲 自分自身のクラスのみ 自分と同じパッケージに属するクラス protected protected 自分と同じパッケージに属するか、 自分を継承した子クラス public public すべてのクラス 実演 実演 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 今までのインスタンス インスタンス フィールド メソッド 子クラスのインスタンス 子クラスのインスタンス 親クラスのインスタンス 子クラスのフィールド 親クラスのフィールド 親クラスのメソッド 子クラスのメソッド HeavySwordsmanのインスタンス HeavySwordsmanのインスタンス Swordsmanのインスタンス usingShield name,hp,・・・ rest( ) move( ) move( ) switchShield( ) メソッドの呼び出し 多重構造になっているインスタンスは、 極力、外側にある子インスタンス部分のメソッドで対応しようとする 親インスタンス部へのアクセス 親インスタンス部に属するメンバにアクセスすることが可能 super.フィールド名 super.メソッド名(引数リスト) 実演 祖父母インスタンス部へのアクセス 祖父母インスタンス部へはアクセスできない 祖父母 不可能 親 可能 子 Aクラスのインスタンス Aクラスのインスタンス Aクラスのフィールド Aクラスのメソッド Aを継承したBのインスタンス Bクラスのインスタンス Aクラスのインスタンス Bクラスのフィールド Aクラスのフィールド Aクラスのメソッド Bクラスのメソッド Aを継承したBを継承したCのインスタンス Cクラスのインスタンス Bインスタンス Cクラスのフィールド Aインスタンス Aフィールド Aメソッド Bフィールド Bメソッド Cクラスのメソッド 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 子インスタンスの作成手順① 親クラスのインスタンス 親クラスのフィールド 親クラスのメソッド 子インスタンスの作成手順② 子クラスのインスタンス 親クラスのインスタンス 子クラスのフィールド 親クラスのフィールド 親クラスのメソッド 子クラスのメソッド 実演 実演 実演 実演 実演 子クラスのコンストラクタ すべてのコンストラクタは、 その先頭で必ず親クラスのコンストラクタを呼び出さなければならない。 super(引数リスト); ※コンストラクタの最初の行にしか記述できない 呼び出していない場合、Javaが自動的に 引数無しの親クラスのコンストラクタを呼び出そうとする。 実演 実演 実演 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 is-aの原則 子クラス is a 親クラス 子クラスは親クラスの一種である と言えるように継承を行うべきである 汎化・特化の関係 is-aの原則に則って継承を行えば、 子クラスになるほど「特殊で具体的なもの」に具体化(特化)していき、 親クラスになるほど「一般的で抽象的なもの」に一般化(汎化)していく 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 final 修飾子の一つ ①変数につけると、その変数は書き換えることができなくなる ②メソッドにつけると、そのメソッドはオーバーライドできなくなる ③クラスにつけると、そのクラスは継承できなくなる 実演① 実演② 実演② 実演③ 実演③ 目次 • 継承の基礎 • インスタンスの姿 • 継承とコンストラクタ • 継承のルール • final • 演習 演習 前々回と前回で使用したMageクラスを継承するGreatMageクラスを作 成せよ。その際、Mageクラスに変更を加えてもよい。
© Copyright 2024 ExpyDoc