为什么不能从构造函数的任何类创建实例?

时间:2010-05-28 14:07:07

标签: c# .net visual-studio oop

为什么我在课外生成实例。我将继承snifC给sinifD我需要在构造函数的SinifD中创建实例sinifC sinifc = new sinifC()吗?

  public  class sinifC
    {
       public  void method3()
        {
            Console.WriteLine("Deneme3");
        }
    }

   public class sinifD : sinifC
    {
        void method4()
        {
            Console.WriteLine("Deneme4");
        }

        public sinifD()
        {
            sinifC sinifc = new sinifC();
            sinifc.method3();
        }
    }

我想在下面做到:


    public  class sinifC
    {
       public  void method3()
        {
            Console.WriteLine("Deneme3");
        }
    }

   public class sinifD : sinifC
    {
        void method4()
        {
            Console.WriteLine("Deneme4");
        }


            sinifC sinifc = new sinifC();
            sinifc.method3();

    }

错误:无效的令牌'('在类,结构或接口成员声明中

4 个答案:

答案 0 :(得分:3)

没有

        sinifC sinifc = new sinifC();
        sinifc.method3();

需要在方法内吗?

您似乎想要创建一个对象的实例并在类的主体内调用它的方法,但是您需要在方法内部实现它。

答案 1 :(得分:2)

您不必在构造函数中编写代码,但必须以某种方法编写代码。您目前只是在课堂上的任何地方编写代码。如果您不想创建D类的实例来执行此操作,则可以在D类中创建一个静态方法来创建C类的实例(您甚至可以使用静态构造函数)。

答案 2 :(得分:1)

类的主体中唯一有效的指令是声明(可选地包括字段的初始化)。方法调用在这里不是有效指令,它必须在方法

答案 3 :(得分:1)

如果您通过扩展继承而使用继承,则无需创建sin实例。

class Program
{
    static void Main(string[] args)
    {
        sinifD s = new sinifD();

        // call method3 on sinfiD
        s.method3();
    }
}

public  class sinifC
{
   public  void method3()
    {
        Console.WriteLine("Deneme3");
    }
}

public class sinifD : sinifC
{
    // sinifD inheritrs mehtod3 from sinifD

    // method 4 is protected, so only classes in the class hierachy see that method
    void method4()
    {
        Console.WriteLine("Deneme4");
    }
}