public abstract class Person
    {        protected string name;
        protected int age;        public Person(string name, int age)
        {
            this.name = name;
            this.age = age;        }        public abstract void SayHi();
    }public class Chinese : Person
    {
        private string address;
        public Chinese(string name,int age,string address)
        {
            this.name = name;
            this.age = age;
            this.address = address;
        }        public override void SayHi()
        {
            Console.Write("My name is {0},{1} old,{3}", name, age,address);
        }
    }这样为什么不可以

解决方案 »

  1.   

    public Chinese(string name,int age,string address) : base(name, age)
    {
          this.address = address;
    }
      

  2.   

    构造函数不能被继承
    使用Base调用基类方法或属性时,会沿着继承链逐级往上寻找,以最近为原则,找到就调用,找不到就报错 。
      

  3.   

    也可以这样
     public abstract class Person
        {        protected string name;
            protected int age;
            public Persion(){
               ....
            }
            public Person(string name, int age)
            {
                this.name = name;
                this.age = age;        }        public abstract void SayHi();
        }public class Chinese : Person
        {
            private string address;
            public Chinese(string name,int age,string address)
            {
                this.name = name;
                this.age = age;
                this.address = address;
            }        public override void SayHi()
            {
                Console.Write("My name is {0},{1} old,{3}", name, age,address);
            }
        }