你想成为武林高手吗?那你需要明确自己的目标,为了实现这个目标,需要了解各个功法的功法特性,从中选出适合自己的武林功法。
为了学会这个武林功法,我们需要先从功法的内部心经,了解到这部功法的精髓之处。以功法的内部心经为指导,在师傅的引领下,对武功招式进行千锤百炼的练习,达到个人对这个武功的运用和理解。
在个人完全掌握这个武功的精髓之后,我们还需要进行高手过招,不断的锤炼和提升自己,所以我们需要多多的参看别人的代码,多看多练,不断的思考揣摩,并最终为自己所用。达到称霸武林的决心目标。
今天先介绍武功绝学第一课:功法特性
功法特性
封装、继承、多态
封装
将多个基本数据或者自定义数据类型组合成一个自定义类型的类或结构体,通过一些访问级别(public,private,protected,internal)对类外提供方法,隐藏实现细节。
设计角度:
a .高内聚:类的内部高度聚集,实现单一职责原则。
b.低耦合:类与类之间不要有联系,实现单一职责原则
c.单一职责:将每个类的职责划分清晰,分开声明,标准是封装变化点。
总结: 通过类封装数据(字段,属性,方法,构造方法,静态数据等)
通过类的方法(一定的访问级别封装,提供一个方法)
依据变化点设计每一个类(高内聚,低耦合,单一职责)
public、private、protected、internal。
继承
它允许一个类继承另一个类的属性和方法。在 C# 中,继承是通过使用 “:” 符号来实现的。子类继承了基类的属性和方法,同时还可以添加新的属性和方法,或者覆盖基类的方法。继承的目的是为了实现代码的重用和扩展性。
new:在子类方法中出现,用于顶替掉父类中相同名字的方法。这2个方法是同时存在的,需要用到父类方法的时候,方法前面加 【 base. 】调用子类的方法时可以在前面加【 this. 】
override: 只会出现在子类内,作用是,父类只声明,没有方法体,子类去实例化具体的方法体。
new、override、virtual、Interface、abstract
公有继承、保护继承、私有继承、内部继承、接口继承、多态继承、抽象类继承
多态
基类同一种动作或者行为(父类型的引用调用同一方法),在不同的子类上有不同的实现。
继承将相关的概念共性进行抽象,并提供一种复用的方式;多态在共性的基础上,体现类型及行为的个性化,即一个行为有多个不同的实现。
虚方法(virtual-override):虚方法可以在不同的继承类中有不同的实现,即为基类中定义的允许在派生类中重写的方法。
抽象类(abstract): 当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法,在类前面加关键字abstract,方法前面加abstract,抽象方法不能有函数体。有大括号,里面没有内容叫空实现。抽象类不允许创建对象和接口。
接口(interface )
- 接口就是为了约束方法的格式(参数和返回值类型)而存在的,接口可以实现多继承,弥补单继承的缺陷。
- 接口可以看成是一个特殊的抽象类,通过反编译看源码可知。
- 接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体
- 如果一个类实现了某个接口,就必须得实现该接口中所有的方法
- 接口是用来实现的,类是用来继承的。
- 接口中只能定义方法,不能定义变量。