C#面向对象编程--继承性

继承性

1.C#中的继承,子父类关系.   

2. C#中的继承符号 :  冒号

3. C#中的继承是单层继承         

4.C#中的继承具有传递性

子类类名的后面加上冒号,冒号跟的是一个父类的类名

class  A   {  }   爷爷A

Class  B : A {  }   父亲B

Class  C : B {  }   儿子C

注:C类继承了B类,C就具备了B类的所有内容,B类又继承了A类,B类就具备了A类的所有内容,而对于C来说,C类不光具备了B类的内容,同时,隐式的具备了A类中的内容

子类继承了父类,全部内容都会被子类继承

除了1) 父类私有的内容:表面上看,是访问不到,但是实际是继承了只是暂时访问不到(可以通过反射等操作拿到相关数据)

2)父类的构造方法:构造方法是不能继承的,但是可以子类可以使用

如果父类有了内容,子类又定义了相同内容,用子类对象调用时,

关键词:virtual     override      new      base

子类里面啥都没有全都是继承的父和爷爷

继承性:如何实现代码重复利用

继承基本内容:   1)子父类       2):     3)单层继承      4)传递性

5)全部继承(除了私有和构造方法)

当创建一个子类对象时,先进入子类构造方法

在子类每个构造方法的小括号后面,其实都默认省略了  : base()

先调用父类的无参数构造方法,然后才是子类当前的构造方法

(1)不写: base()  , 调用父类无参数

(2)写: base(), 调用父类无参数

(3)写:base( *** ), 调用父类对应形式的构造方法

上面所有内容说明:

*创建子类对象,一定会先调用父类相应的构造方法

*调用父类无参数的还是有参数的,有几个参数的,取决于子类构造方法小括号后面使用 :base (参数)

继承关系中的构造方法负责的工作:

有时创建对象时通过构造方法为字段赋值,有些字段是继承父类得来的,在子类中直接为这些字段赋值是不可取的,

如何破?

谁的字段交给谁初始化(赋值)如果是父类的字段,就要使用: base() 的形式让父类自己去赋值。

子类的特性内容,让子类自己赋值。

练习:

创建图形类,Shape   字段:名字name,方法:求周长和求面积的方法,构造方法

图形类子类:矩形类Rectangle-字段:width,height,构造方法

圆形类: Circle,字段: radius 半径,构造方法.

要求:子类中对求周长和面积的方法进行重写。

 

 

猜你喜欢

转载自blog.csdn.net/xiaobaihao0311/article/details/122094476