オブジェクト指向のコーディングに少し問題があります。
これが私のコードです:
public class BasicEngine
{
public string name = null;
public string id = null;
public BasicEngine()
{
name = "Name of basic engine type";
id = "Basic engine id here";
}
}
public class SuperEngine: BasicEngine
{
public string name = null;
public string address = null;
public SuperEngine()
{
name = "Name of super engine here";
address = "Super engine address here";
}
}
これらのクラスのオブジェクトを次の方法で作成しています。
BasicEngine e1 = new BasicEngine();
MessageBox.Show("e1 type is " + e1.GetType().ToString());
SuperEngine e2 = new SuperEngine();
MessageBox.Show("e2 is " + e2.GetType().ToString());
BasicEngine e3 = new SuperEngine();
MessageBox.Show("e3 is " + e3.GetType().ToString());
SuperEngine e4 =BasicEngine(); // error An explicit conversion exist (are you missing cast ?) and if I try to cast it like SuperEngine e4 =(SuperEngine ) new BasicEngine(); it give run time error.
e1 は BasicEngine であるべきです。e2 は本来あるべき SuperEngine です。
ここに私の混乱と質問があります:
e3 は BasicEngine タイプで、そのデータが表示されます。SuperEngine タイプであると予想されますが、なぜですか?
e4 は error: error
An explicit conversion exist (are you missing cast ?)
を返します。そのようにキャストしようとするSuperEngine e4 =(SuperEngine ) new BasicEngine();
と、実行時エラーが発生します。