如果基类没有默认的构造器

时间:2022-04-13 08:36:28

担任反响了类和类之间的关系。

世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的布局清晰易读,而且易于代码的扩展和维护。

C#的担任只能担任自一个基类,这一点差别于C++的担任。

C#的担任具有通报性,即B担任自A,C担任自B,则C具有A的所有特性。

C#的担任隐式为public的。

假如不在派生类结构器中显示挪用一个基类结构器,编译器会自动插入对基类的默认结构器的一个挪用,然后才会执行派生类结构器中的代码, 如果基类没有默认的结构器,会造成编译错误。

举例:动物的共性:有嘴巴,有眼睛,有鼻子,可以移动,,能够吃对象

所以界说基类   (包罗动物的共性)


代码如下:


public class Animal {

……

}

再界说具体的动物的时候就可以担任自基类Animal,不用再从头界说这些根基的特征,只界说本身独占的特性就好。

例如:Dog


代码如下:


public class Dog:Animal

{

//编译器会自动插入对基类的默认结构器的一个挪用,然后才会执行派生类结构器中的代码

public string Bark;//狗叫声

}


代码如下:


public class Dog : Animal {

//在派生类结构器中显示挪用一个基类结构器

public Dog()

: base() {

}

public string Bark;

}


注意:

可以把一个派生类的值赋给基类,但不能把一个基类的值赋给派生类,因为基类不能转换为派生类,基类中只包罗了派生类的一部分特性。

Animal animal=new Dog(); 正确的

Dog dog=new Animal();错误