オブジェクトの代入 その2Advertisementオーバライドした場合
その1の続き。
その1でエラーになったとこ。自分から見て上のクラスのオブジェクトには代入できる、けど、サブクラス独自のメソッドは使えない。 てやつね。 そこで、スーパークラスのオーバーライドしてみたらどうなるのか実験。
public class th{
public static void main(String args[]){
Vehicle ve = new Vehicle(new String("乗り物"));
Car ca = new Car(new String("車"));
//代入
ve = ca;
ca.go(); //goを呼ぶ
ve.go(); //こっちも。
}
}
class Vehicle{
protected String name;
public Vehicle(String n){
name = n;
}
//スーパークラスのgoメソッド
public void go(){
System.out.println("乗り物クラスです。");
}
}
class Car extends Vehicle{
public Car(String s){
super(s);
}
//オーバライドしたほう
public void go(){
System.out.println(name + "はブーン。");
}
}
結果↓
車はブーン。 車はブーン。ん、今度はどっちからでも呼び出せた。 オーバーライドしてるばあい、オーバーライドしたほうを呼び出す。 …あたりまえか。 Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |