深入.net(继承)

时间:2022-08-26 17:19:07

继承、多态,学习目标:

1、能够熟记定义和概念

2、能够理解其内部意义

3、能够运用到自己的编码实现中

如何进行代码的复用:

----- 自己写好了一段代码,理想状态(永远都不要再写了,直接用)

----- 当编写好一个类后,再编写其他类时,如果他们有“共同的属性”和“共同的方法”时,我们就可以考虑将其共有的部分,提取出来,便于后续的复用!

步骤:

1、创建一个新的数据容器(类)

2、将需要“复用”的属性和方法,剪切到类中(父类)

3、在将新类,在其定义语法后,使用 : 父类 的方式建立两者的关联

---- 这就是我们所说的“继承”:

继承的目的:实现“代码的复用”,新类继承了“原来一个类”,即具有原来那个类所拥有的属性和方法。

“继承”的特点及特性:  ---- 被继承的类:父类、基类;继承对方的类:子类、派生类

1、子类继承父类后,具有父类所有对外公开的属性和方法

2、子类的方法中,如何使用父类资源:base.父类资源、this.父类资源(父亲的也是你)

3、但是父类无法获取“子类”自有的资源。(儿子的还是儿子的)

4、不是所有的“父类”资源都可以被子类使用:

private         --- 私有的资源,只能在本类中使用,子类也无法使用。

protected   --- 该类资源,只被“本家族”的对象所使用,外部无法访问。

5、“子类”继承“父类”满足: is  a 关系 【子类  is  a  父类】

---- 当我们的程序中,一个类,完全可以被另外一个类所代替的话!我们就说他们之间满足“里氏替换原则”【子类完全可以替代父类】

6、单根性 ---- 一个子类只能继承于一个父类

传递性 ---- 儿子可以继承父亲,孙子可以再继承儿子,且越后代的类获取的资源越多

5、子孙类在创建对象实例时,先创建其父类,再创建其后续子类。

6、 子类中bass的用法:

1、在子类的方法中,使用base调用父类的属性及方法

2、在子类的构造函数后,使用 :base()的方式,给父类传递构造参数

private

在类中,才能被访问

protected

在类中,及子孙类中,才能被访问

internal

在本项目中(程序集),才能被访问

public

所有人都可以访问

小贴士:

实现对现有“类”的复用:

方式一:继承 ---->  is  a 关系 ----->  张三  is   a  李四(张三就说李四,具有李四的功能)

方式二:雇佣 ----> has a 关系 -----> 张三 has  a   李四(张三中有一个李四,拥有了四的功能)

两种方法的对比:

继承,不仅可以用于其对外属性和方法,还可以使用其protected的方法,但是关系太紧密,不便于扩展和替换;

雇佣,灵活,便于扩展,更有利于对“多个资源”同时进行复用