Javaクラスの継承について

Twitter ツイート Hatena Bookmark ブックマーク

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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();
    }
}

実行結果

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

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

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。