0

次のことを試していますが、コンパイル時エラーが発生します

   class Program
{
    static void Main(string[] args)
    {
        shape.innershape s = new rectangle(); // Error Here

    }
}
class shape
{
    public int nshape = 0;
    public shape()
    {
        nshape = 1;
        innershape n = new innershape();
    }
    public void MakeOuterShape()
    {

    }
    public class innershape
    {
        public int nInnerShape = 0;
        public innershape()
        {
            nInnerShape = 1;
        }
        public void makeInnerShape()
        {

        }
    }
}
class rectangle :shape
{
     // Code goes here.
}

Shapeクラスの定義を含むクラスを継承していますinnershapeRectangleしかし、参照してクラスのインスタンスを作成しようとすると、innershapeコンパイル時エラーが表示されます。どうして ??どうすればそれを可能にすることができますか?

4

3 に答える 3

1

四角形はshapeから継承されますが、 innershape からは継承されないため

  class rectangle: shape {
  ...

  public class innershape
  {
   ...

あなたは書くことができません

shape.innershape s = new rectangle(); // <- can't convert rectangle to shape

しかし、代わりに置くことができます

  shape s = new rectangle(); // shape is super class for rectangle

おそらく、コードを次のように変更する必要があります

  class rectangle :shape.innershape 
  {
  ...
于 2013-08-01T11:29:10.690 に答える
0

また、クラスを公開してみてください。そうすれば、可視性が制限されなくなります。

于 2013-08-01T11:33:53.293 に答える