前に、C#に関する以下のような問題を見かけました。
基本クラス x = new 派生クラス();
上記で、x は、派生クラスの公開メンバにアクセスできますか?
(派生クラスは、基本クラスを継承しています)
もちろん、派生クラスは、基本クラスを継承しています。
C# というよりも、オブジェクト指向ちっくな問題ですね。
僕が、C# を学び始めて、この問題を見た時は、まず以下の部分に
衝撃
を覚えました。
基本クラス x = new 派生クラス();
こんな書き方ができるなんて思わなかったからです。
しばらく経ってから、この書き方は、以下のような書き方と同じことなのだと気づいた時、深く納得できました。
派生クラス b = null;
b = new 派生クラス();
基本クラス x = null;
x = (基本クラス)b;
・・・逆にややこしいですか?