@634

オブジェクトの代入 その2

Advertisement

オーバライドした場合

その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!ログール