Public class Teacher{
Public Teacher(string name){
Console.WriteLine(“老师的名字叫”+name);
}
}
public class Test:Teacher{
public Test(string name)
{
Console.WriteLine(“学生的名字叫”+name);}
Static void Main()
{
Test stu=new Test(“李明”);
Console.ReadLine();
}
}

解决方案 »

  1.   


    using System;
    using System.IO;
    namespace MyDemo
    {
     public class Demo
     {
         Static void Main() 
         { 
             Test stu=new Test("李明"); 
             Console.ReadLine(); 
          } 
     }
     Public class Teacher
     { 
          Public Teacher(string name)
          { 
              Console.WriteLine("老师的名字叫"+name); 
          } 
     } 
     public class Test:Teacher
     { 
          public Test(string name) 
          { 
              Console.WriteLine("学生的名字叫"+name);
          } 
      } 
    }
      

  2.   


    using System;
    using System.IO;
    namespace MyDemo
    {
     public class Demo
     {
         Static void Main() 
         { 
             Test stu=new Test("李明"); 
             Console.ReadLine(); 
          } 
     }
     public class Teacher
     { 
          Public Teacher(string name)
          { 
              Console.WriteLine("老师的名字叫"+name); 
          } 
     } 
     public class Test:Teacher
     { 
          public Test(string name) 
          { 
              Console.WriteLine("学生的名字叫"+name);
          } 
      } 
    }
      

  3.   


    using System;
    using System.IO;
    namespace MyDemo
    {
     public class Demo
     {
         Static void Main() 
         { 
             Test stu=new Test("李明"); 
             Console.ReadLine(); 
          } 
     }
     Public class Teacher
     { 
          public Teacher(string name)
          { 
              Console.WriteLine("老师的名字叫"+name); 
          } 
     } 
     public class Test:Teacher
     { 
          public Test(string name) 
          { 
              Console.WriteLine("学生的名字叫"+name);
          } 
      } 
    }
      

  4.   


    using System;
    using System.IO;
    namespace MyDemo
    {
     public class Demo
     {
         Static void Main() 
         { 
             Test stu=new Test("李明"); 
             Console.ReadLine(); 
          } 
     }
     public class Teacher
     { 
          public Teacher(string name)
          { 
              Console.WriteLine("老师的名字叫"+name); 
          } 
     } 
     public class Test:Teacher
     { 
          public Test(string name) 
          { 
              Console.WriteLine("学生的名字叫"+name);
          } 
      } 
    }
      

  5.   


    using System;
    using System.IO;
    namespace MyDemo
    {
     public class Demo
     {
         static void Main() 
         { 
             Test stu=new Test("李明"); 
             Console.ReadLine(); 
          } 
     }
     public class Teacher
     { 
          public Teacher(string name)
          { 
              Console.WriteLine("老师的名字叫"+name); 
          } 
     } 
     public class Test:Teacher
     { 
          public Test(string name) 
          { 
              Console.WriteLine("学生的名字叫"+name);
          } 
      } 
    }
      

  6.   


        public class Demo
        {
            static void Main()
            {
                Test stu = new Test("李明");
                Console.ReadLine();
            }
        }
        public class Teacher
        {
            public Teacher()
            { 
                //初始化
            }
            public Teacher(string name)
            {
                Console.WriteLine("老师的名字叫" + name);
            }
        }
        public class Test : Teacher
        {
            public Test(string name)
            {
                Console.WriteLine("学生的名字叫" + name);
            }
        } 
      

  7.   

    我虽然会的不多,但是我以我的理解回答楼主的吧.首先楼主问的是错在了哪里?不是来求正确的解决方案的,可能正确的代码楼主自己早就改出来了.
    楼主问错在哪里?答:楼主错在没有给teacher类写 参数为"0"的构造函数,也就是 Teacher(),而是只写了一个Teacher( string name). 下面就具体解释下:
    这是面向对象的继承关系问题:一个类继承基类,基类若还有基类,结果就是继承关系从继承从基类往上到顶级基类.那么顶级基类是什么那?是System.object()类.也就是说一个类没有显示指名继承谁,就隐式的继承了System.object()类,System.object()类没有任何直接或者间接基类,并且是其他所有类的终极基类.System.object()类有自己的构造方法,那就是System.object.object()方法(参数是零个).
    一般父类要有一个无参数的构造方法是因为我们的子类如果没有显性的调用父类的构造函数的话就会默认加入base();即调用父类的无参数构造函数,当父类没有无参数构造函数就会报错.
     实例类就要先执行他的构造方法是很对的,但是条件是得先顾上头,那优先.所以 实例化一个类会发生什么事情那?首先必须先实例他的基类,依次网上,直到System.object()类,实例类就要先执行他的构造方法,所以无论使用什么构造方法(Test stu=new Test(“李明”); )实例化一个类,总是要先执行System.object.object()方法.所以你的程序那句实例化句子执行时,就会默认的执行的函数顺序 :System.object.object(),Teacher(),Test();
    System.object.object()是空的,不用管. 到了Teacher(),你没有,就出错了.所以那怕你在程序里写个Teacher(){Console.WriteLine("HaHa")}甚至是空的Teacher(){}(这也是实现了)你的程序也不会出错.然后到当前"最低"的类时执行你指定的构造函数.比如你还有个Teacher(string name,int aa)构造函数,就会根据你向构造函数副的参数决定执行那个构造函数.你若是指定的是自己的参数为零的构造函数,也就是这样实例化:
    Test stu=new Test();  ,即使Teacher类里有Teacher(),而你Test里没有参数为零的构造函数,也会出错. 所以经常看见有人写类时就会先把参数为零的构造函数(看你那她干什么了,不用就空着)摆在那里.    到现在就基本上解决了你的疑问.值得注意的是,这种默认的执行顺序可以被打破,那就是利用base
    你的程序
    Test stu=new Test(“李明”); 写成这样Test stu=new Test(“李明”) :base(name)  就不会出错,当然会打印两边.因为用base 可以选择基类实例的构造函数,就打破默认的顺序.实际上一个实例构造函数如果没有指定基类的构造函数,将会隐式的添加base().即调用父类的无参数构造函数.(前面已经说过了)
    楼主可能刚学面向对象,学的不多,对于任何程序又想了解的十分清楚(这是对的)就头大了.其实有些时候可以先过去,别影响进度,先学着,再慢慢解决.看你放这么多分,肯定特别郁闷,也当然也有决心.其实学习编程就得硬着头皮来,慢慢的知道的多了,一座山的真面目及清楚了.最后说明一点:以上都是我参照网上的意见和自己的理解,仅供参考.不当之处敬请原谅,主要为了抛砖引玉,希望高手不要抛砖砸我.
      

  8.   

    类是创建对象的模板,楼主在Test类里就实例化,编程风格不是很好.