Javaクラスの継承について

February 4, 2009,
tags: java 継承


このエントリーをはてなブックマークに追加

なんか授業が暇すぎるので、ちょっと違うことをしてみますた。
継承したクラスをインスタンスするときの変数の型にスーパークラスの型名を指定すると、継承したサブクラスのメソッドは使えないんですね。
こんな感じでソースを書くとエラーでました。

class Msg
{
    String name = "John Smith";
    void msg(){
        System.out.println("Here is Msg.msg");
    }
}

class Msg1 extends Msg
{
    void msg1(){
        System.out.println("Here is Msg1.msg");
    }
}

public class Ex0903e
{
    public static void main(String[] args){
        Msg m = new Msg1();
        System.out.println(m.name);
        m.msg();
        m1.msg();
    }
}

実行結果

Ex0903e.java:22: シンボルを見つけられません。
シンボル: メソッド msg1()
場所    : Msg の クラス
        m.msg1();

ということで、スーパークラスの型を指定するとスーパークラスしか使えないんですね。
勉強になりました。

comments powered by Disqus