继承性
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 半径,构造方法.
要求:子类中对求周长和面积的方法进行重写。