概述
C#中的继承是面向对象编程的重要概念之一,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和行为。
继承的主要目的是实现代码重用和层次化的组织。子类可以继承父类的字段、属性、方法和事件,而无需重新实现这些成员。通过继承,我们可以在子类中添加额外的功能或修改父类的行为,实现代码的扩展和定制。
在C#中,使用冒号(:)符号来表示一个类继承自另一个类
基类
internal class person
{
public int age;
public string name;
public void speake()
{
Console.WriteLine("说话");
}
}
子类
//chinese继承了person类,可以直接使用person类中定义好的字段和方法
internal class chinese : person
{
//果如,字类中定义了和父类一样的字段或方法可以使用new关键字来修饰
public new void speake()
{
Console.WriteLine("中文");
}
}
继承中的构造方法
无参构造方法
//父类的无参构造方法
public person()
{
Console.WriteLine("person父类无参构造函数");
}
//字类的无参构造方法
public chinese()
{
Console.WriteLine("chinese字类的构造方法");
}
在main方法中实例化chinese类
chinese s = new chinese();
执行后的结果
结论:在字类继承父类中,实例化子类的对象,会首先执行父类的构造函数,在执行字类的构造函数
有参构造函数
//父类有参构造函数
public person(int age, string name)
{
Console.WriteLine("person父类:" + "age:" + age + ",name" + name);
}
//字类的有参构造函数
//base关键字的作用是把字类的形参传递给父类,有参构造函数必须要父类传参,要不然会报错
//base这里也可以直接写自己的参数,不复用字类传递过来的值 :base(10,"xiaoming")
public chinese(int age, string name) : base(age, name)
{
Console.WriteLine("chinese字类" + "age:" + age + ",name:" + name);
}
在main方法执行chinese的有参的实列
chinese s = new chinese(301, "xiaoming1");
执行后结果
总结:当父类只有有参构造函数时,字类使用有参构函数时。首先调用自己的父类的有参构造函数,在调用自己的有参有参构造函数。