@IT:連載 改訂版 C#入門 第4章 継承とインターフェイス
敬称については結構厄介な事は記憶している。しかし一つ目のサンプルコード(List4-1)は比較的容易に理解出来る。なぜなら
public string getName() public string getTaroName()
と明確に違う名称になっているからだ。当然ながらmainに記述された記述から、3つのメッセージが表示されるのは予測が付く。おそらくこの章でのこの部分は今回後の課題への誘導を目的とした例で内容的には問題視されていないと思われる。
次の課題は、スーパークラスからサブクラスが継承して生成するメソッドを書き換えるというニュアンスの受け止め方だろう。List4-2の13行から19行では、Personクラスから継承しているのに、newを付けて内容を「私の名前は太郎です」と書き換えている。もちろんこれは必要な場合が想定出来るから全く疑問には思わない。ここまでは普通に理解できるし便利だと思う。
問題はmainメソッドの中にある30行目
Person someone = new Taro();
これはよく読まないと見落としてしまうが、Taroクラスからインスタンスを生成しているにもかかわらず、Personクラスの変数someoneに格納しているのが違和感だ。これを見ただけでは全く予測もつかないが後の解説を読むと、Taroクラスからのインスタンスでも、Personクラスの変数に格納した場合にはPersonクラスのメソッドが格納されているということだ。こういうモノだと覚えるしか無いのだろうが理解出来ない。その理由については、System.Drawing.Imageクラスから継承がうんぬん書かれているが、現時点の私には理解不能である。
いよいよ、この手のルールを覚えるのがうざくなって来やがった。困ったことだが覚えるしかないんだろうなぁ。
4-3 より根本的に機能を置き換える継承
この部分は解説の流れから完全に上書きしちゃうんだろうなぁと容易に想像出来たが、virtualとoverrideはあまり使うべきではないとある。何がなんだか分からなくなってきたが、こんなところで躓いても仕方ないので、そういうモノだと理解しておくようにする。恐らくこの手法は使うことはまず無いと思えるし、もしも必要になった時には思い出せば良いだろう。
4-4 抽象クラスからの継承
もはやこれを何に使うのかが全く想像がつかない。説明の内容は理解は出来る。それをどう使うのかがイメージ出来ないのだ。どういうシーンで必要になる?
こんなものをこの段階で理解する必要は無いと確信しているので、深くは考えない事にする。ポイントは抽象クラスからは継承出来るが、インスタンスを生成することは出来ないということ。まぁ言い換えれば中身の無いテンプレートを使っても何も生成出来ないのは当然と言えば当然だわな。ちゃっちゃとこんなのはパスしとく。どうでもいい。
4-5 インターフェース
解説の内容と結果は想像どおりだが、インターフェースの役割についてはさっぱりイメージ出来ない。何を言いたいのか分からない。現時点ではどうでもよさそうだ。パスして深く考えるのはよそう。


コメント