当创建一个类时,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这 个已有的类被称为的基类/父类,这个新的类被称为派生类/子类。
继承概述:
1.继承子承父业,子类可以继承父类的可继承属性、函数
2.但是并非完全继承,只有可继承的类成员才可以被继承,主要使用访问修饰符进行设置
3.继承实质上是对象与对象之间的关系,在开发的时候酌情实现继承
4.C#继承只能实现单继承,每个类只能继承一个父类,一个父类可以拥有多个子类
5.继承可以隔代继承
6.不允许相互继承(循环继承)
7.C#不允许多重继承,但是可以实现多重接口继承
基类和派生类
子类只能有一个直接父类,但一个父类可以有多个直接子类。继承是可以传递的。定义要从其他类派生的类时,子类会隐式获得父类的所有成员(除了其构造函数和终结器)。子类因而可以重用父类中的代码,而无需重新实现。在子类中,可以添加更多成员。通过这种方法,子类可扩展基类的功能。
eg:
基类(父类)
class Person
{
//构造函数
/* public Person(){
Console.WriteLine("此为Person构造函数");
}*/
public string personShuxin{get;set;}
public string personShuxins { get; set; }
public Person(string name)
{
// name = "这是基类构造函数传入的name参数";
Console.WriteLine(name);
}
/*public string Fangfa()
{
Console.WriteLine("此是Person的方法");
return "此是Person的方法,return返回的";
}*/
protected int Width;
protected int Height;
public void setWidth(int w)
{
Width = w;
}
public void setHeight(int h)
{
Height = h;
}
}
子类
class Son:Person
{
public Son(string name):base(name)
{
//base.Fangfa();
Console.WriteLine("此为子类的构造函数-----------" );
// Console.WriteLine(name);
}
public int getArea()
{
return (Width * Height);
}
}
基类的初始化
派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。
对象初始化先执行子类构造,再进行父类构造,但是先是父类构造完成,再是子类构造完成
如果父类构造函数有形参,则子类必须要手写构造,并且带有相同的形参(形参的个数类型一致即可,不用管顺序,参数的命 名),然后在子类构造函数之后紧跟着写:base(),base括号中的参数代表给父类构造传递的参数,传递的参数顺序必须要 和父类中的形参顺序一致
密封类
通过在类定义前面放置关键字sealed,可以将类声明为密封类。当一个类被声明为sealed时,它不能被继承。抽象类不能被声明为sealed。密封类可以叫做最终类。