オーバーライド |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
オーバーライド
親クラスのメソッドを、子クラスで再定義すること。
(条件を満たす必要がある。)
再定義の機能を利用することで、親クラスの能力を
子クラスで強化したり変更したりできる。
親クラスの上に子クラスの内容を乗せて隠すイメージ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
オーバーライドの例(ワゴンクラス)
1、内容を考える
親クラスのアクセルメソッドを子クラスで作り直す。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
2、クラスを設計する
オーバーライドで親クラスにあるメソッドを
子クラスで変更したい場合、
子クラスに同じ名前のメソッドを定義する。
(本当に親クラスが書き換えられる訳ではない。) |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
オーバーライドの条件
オーバーライドするメソッドは、親クラスと子クラスで、
名前と渡す値(引数)を全て同じにしないとだめ。
メソッドの名前だけじゃなくて、型や個数、並び順まで、
全部同じにしないとだめ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
3、作ったインスタンス使う
メソッドを使った場合、基本的に
子クラスのメソッドが呼び出される。
これで強化したアクセルメソッドが使えた。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
フィールドは上書きできない?
フィールドの場合、
オーバーライドじゃなくて隠蔽になる。
今回は細かいところは省略します。
オーバーライドがどんなものかだけ
覚えておいて下さい。
今後、実際にJavaで使う時に説明します。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|