http://blogs.wankuma.com/rti/archive/2007/04/16/71609.aspx
昔見た問題
の続きです。
今回は、以下の C# のコードを 1 行にまとめるまでの
道のり
についてです。
派生クラス b = null;
b = new 派生クラス();
基本クラス x = null;
x = (基本クラス)b;
まず、型の定義と初期化は、以下のように一行にまとめられます。
派生クラス b = new 派生クラス();
基本クラス x = (基本クラス)b;
次に、継承しているクラスから生成されたオブジェクトは、その基本クラス、または基本クラスの基本クラスに対して型セーフとなるため、明示的にキャストしなくても良いことを知って下さい。
(現に、全てのオブジェクトは、object 型に代入できますよね?)
http://blogs.wankuma.com/shannon/archive/2007/04/16/71621.aspx
詳細は、上記リンクにわかりやすい説明が書いてあります。
派生クラス b = new 派生クラス();
基本クラス x = b;
そして、「new 派生クラス();」は、オブジェクトを生成するための単なる処理です。
ですから、生成したオブジェクトを x という変数に格納すると考えれば、以下の記述が可能になることもすんなりと納得できるのでした。
基本クラス x = new 派生クラス();