c#继承构建体子和父母?



我是C 程序员,而我是新的C#,我写了一个小程序来测试继承,所以这里源代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lesson3_Class_inherit_
{
   public class Personne
    {
        public string Name;
        public int Age;
        public Personne() { }
        public Personne(string _Name, int _Age) 
        {
            Name = _Name;
            Age = _Age;
            Console.WriteLine("Constrcut Personne Calledn");
        }
        ~Personne() 
        {
            Console.WriteLine("Destruct Personne Calledn");
        }

    };
    class Humain :  Personne 
    {
        public string Langue;
        public Humain(string _Name, int _Age,string _Langue)
        {
        Console.WriteLine("Constrcut Humain Calledn");
         Name = _Name;
         Age = _Age;
         Langue =_Langue;
        }

    };
    class Program
    {
        static void Main(string[] args)
        {
            Humain H1 = new Humain("majdi", 28, "Deutsch");
            Console.ReadLine();
        }
    }
}

输出:构造humain称为班级的构造没有称为为什么!!!在C 中,父类构造函数首先称为!请帮助!

在c#中,您必须使用基本关键字明确调用父构建器。因此,荷兰看起来像

class Humain :  Personne 
    {
        public string Langue;
        public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
        {
         Console.WriteLine("Constrcut Humain Calledn");
         Name = _Name;
         Age = _Age;
         Langue =_Langue;
        }

    };

,因为它调用默认构造函数。要调用其他构造函数,您需要写:

base(_Name, _Age);

在Humain构造函数的开头。

public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
{
    Lange = _Langue;
}

尝试以这种方式调用基类构造函数:

class Humain : Personne
{
    public string Langue;
    public Humain(string _Name, int _Age, string _Langue) : base (_Name, _Age)
    {
        Console.WriteLine("Constrcut Humain Calledn");
        Name = _Name;
        Age = _Age;
        Langue = _Langue;
    }
}

根据您的要求,您甚至可以调用默认构造函数,而不是参数化构造函数

    public Humain(string _Name, int _Age, string _Langue) : base ()
    {
        Console.WriteLine("Constrcut Humain Calledn");
        Name = _Name;
        Age = _Age;
        Langue = _Langue;
    }

最新更新