2010年8月3日火曜日

スーパークラスの変数でオブジェクト

サブクラスのオブジェクトはスーパークラスの変数でも扱えます
F1 f1 = new F2();//とか出来ます。
■javaはオブジェクトが違うクラスの変数でも、オブジェクト自体のクラスのメソッドが呼び出される、
■スーパークラスの変数だと、サブクラスのメソッドは呼び出せません

■オーバーライド とは サブクラス・スーパークラスの同じメソッド名・同じ引数のメソッドを定義すること。

//F1クラスはスーパークラスです。
//F2クラスはサブクラスです。
//配列で扱われているオブジェクトがどのクラスでも、生成元のクラスのメソッドが呼び出されます。
F1 f1[];
f1 = new F1[2];

f1[0] = new F1();
f1[0].setCar(111,222);//生成したインスタンス元、スーパークラスのメソッドが実行

f1[1] = new F2();
f1[1].setCar(1233,432);//生成したインスタンス元、サブクラスのメソッドが実行
■1つのメソッドが状況に応じて動く事を多様性(ポリモーフィズム)という

0 件のコメント:

コメントを投稿