|
第14回 新しいクラス(2) |
| 参考書 Lesson 11.2(参考書p.351)〜Lesson 11.4 |
| 14 新しいクラス(つづき) |
| 11.2 メンバへのアクセス |
| ・サブクラス内からアクセスする - メンバに private、protected、public をつけて、アクセス制限を設定する - スーパークラスの private メンバには、サブクラスからアクセスできない - アクセスの可否
- スーパークラスの protected メンバには、サブクラスからアクセスできる <private と protected の違い>
|
| 11.3 オーバーライド |
| ・メソッドをオーバーライドする - クラスを継承するとき、スーパークラスにあるメソッドと同じ名前(引数も同じ)のメソッドを定義できる これを オーバーライド と呼ぶ <スーパークラスとサブクラスに同じ名前&同じ引数の show() メソッドがある場合>
- サブクラスで新しく定義した方の show() メソッドが実行される ・スーバークラスの変数でオブジェクトを扱う - スーパークラスの型のオブジェクト変数に、サブクラスのオブジェクトを代入できる - スーパークラス Car 、サブクラス RacingCar のとき、普通は RacingCar rc = new RacingCar(); で利用するが、 Car c = new RacingCar(); のようにすることができる - この場合、オーバーライドされているメソッドが呼び出される Car c = new RacingCar(); c.show(); では、サブクラス RacingCar の show() が実行される - オーバーライドしていない c.setCourse(・・) は実行できない ・オーバーライドの重要性を知る - 同じメソッド名を経由してクラス固有の処理をする - オブジェクトをまとめて扱う、プログラムの可読性が高くなるなどのメリットがある <上記プログラムのつづき>
・スーパークラスと同じ名前のメンバを使う - サブクラスからスーパークラスのメンバ(メソッド、変数)を呼び出すことができる - サブクラス内で super. を記述すると、スーパークラスのメンバを指し示すことになる <super. でスーパークラスのメンバにアクセスする>
・final をつける - final をメソッドの先頭につけると オーバーライドができなくなる - final をクラス宣言の先頭につけると クラスが拡張できなくなる - final を変数宣言の先頭につけると 値の変更ができなくなる(定数扱い) |
| 11.4 Objectクラスの継承 |
| ・クラスの階層をつくる - サブクラスをさらに継承して、サブクラスのサブクラスを作成することができる - クラスの継承が多く行われると、クラスの階層構造が生成される - 継承するとき、複数のスーパークラスを指定することはできない ・Objectクラスのしくみを知る - JavaのすべてのクラスはObjectクラスを継承している ・toString()メソッドを定義する - toString()メソッドはオブジェクトを表す出力を行い、Objectクラスで定義されている RacingCar rc = new RacingCar(); System.out.println(rc); のように、クラスのオブジェクト変数そのものが指定されると、toString()が呼ばれる - ふつうは toString() をオーバーライドして利用する ・equals()メソッドを使う - 2つのオブジェクトが同じかどうかを調べる ・getClass()メソッドを使う - オブジェクトが属するクラスの情報を取得する |
| 演習 |