この問題は私を悩ませてきました、そして私は今4つのラッパーを書きました。私はそれを間違っていると確信しており、私の理解がどこに分岐しているのかを理解する必要があります。
金属の棒を表すためにRectangleクラスを使用しているとしましょう。(これは動物よりもうまく機能します)
つまり、基本クラスは「バー」と呼ばれます。
private class Bar
{
internal Rectangle Area;
}
それで。ここで、300ユニット×10ユニットの長方形を作成します。
private Bar CreateBar()
{
Bar1 = new Bar1();
Bar1.Area = new Rectangle(new Point(0,0), new Size(300,10));
return Bar1;
}
素晴らしいので、ベースバーがあります。
ここで、このバーに材料(たとえば鋼)を持たせたいとしましょう。それで。。。
private class SteelBar : Bar
{
string Material;
}
だから私がこれをした場合。。。
private SteelBar CreateSteelBar()
{
SteelBar SteelB = new SteelB();
Bar B = CreateBar();
SteelB = B;
SteelB.Material = "Steel";
return SteelB;
}
CreateSteelBarを呼び出すと、これから得られるものから、CreateBarを呼び出す鋼棒が作成されます。そのため、300 x 10の長方形の棒鋼と、材料用のヌルまたは空の文字列ができあがります。次に、材料を鋼に設定しました。
私のプログラムで似たようなことをしようとすると、下位のクラスから上位のクラスを暗黙的に作成することはできないと言われ続けます。私が見た動物の例からのすべての継承を考慮すると、これが継承が存在する理由であると私は考えたでしょうが、誰かが私を片付けることができることを望んでいます。
また、私は電話をかけることができると確信していますSteelBar = CreateBar();
が、私はここで長い道のりをしました。