继承
继承是面向对象编程的重要表现,继承就是以一个类为基础,其它类在此类的基础上进行开发,这个类称为基类,其它类称为派生类。这样可以使代码的结构更加合理,更易于维护和更新,增加代码的可重用性。
类继承的方式
在声明类时,在类名称后du放置一个冒号,然后在冒号后指定要从中继承的类(即基类)。例如:
public class A
{
public int Num { get; set; }
public A(int a)
{
this.Num = a * 100;
}
public void Test()
{
Console.WriteLine(this.Num);
}
}
public class B : A
{
public B(int b)
: base(b)
{
this.Num = b;
}
}
新类(即派生类)将获取基类的所有非私有数据和行为以及新类为自己定义的所有其他数据或行为。因此,新类具有两个有效类型:新类的类型和它继承的类的类型。
继承的特点
1.派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。
2.可传递性。如果A继承B,B又继承C,那么A既能继承B中声明的成员,同时也继承C中的声明的成员(属性,方法…)。
3.构造函数和析构函数不能被继承,其他的都可以继承。其中能否访问基类的成员在于定义的访问修饰符:Private:只有类本身能存取. Protected:类和派生类可以存取. Internal:只有同一个项目中的类可以存取. Protected Internal:是Protected和Internal的结合. Public:完全存取.
4.派生类是基类的扩展,派生类可以额外定义自己的成员。
5.base可以调用父类的成员方法,除了构造函数和析构函数
6.new: 变量上的 和方法上的 表示是相对于 继承来说的 ,parent(父类)child (子类)2个类都有一个同名变量param 如果 父类的param变量和 子类的param变量不是同一个 那么 子类在申明的时候 就需要在前面加new 表示这个变量 不是父类的。
注意:
1:一个是基类的可访问性必须大于派生类,实际上默认的继承是public类型。另外我们以前提到过的protected,就是指只有派生类可以访问它的基类的protected类型的字段方法等。
:2:派生类可以继承基类的方法,我们在vs2005中创建一个派生类的实例,然后打上该实例名.之后会出现它的方法(包括基类的和派生类的)但很多情况下基类的方法只是一种希望,派生类完全可以改写它,在派生类中改写方法就要用到override关键字,前提是基类中的需要被派生类重写的方法被virtual关键字标示。