封装
1.数据角度:将多个基本数据或者自定义数据类型组合成一个自定义类型
通过类,结构体等实现。
2.方法(功能)角度:向调用者提供一个功能,隐藏实现细节。
通过一些访问级别(public,private,protected,internal)对类外提供方法。
3.设计角度:
a .高内聚:类的内部高度聚集,实现单一职责原则。
b.低耦合:类与类之间不要有联系,实现单一职责原则
c.单一职责:将每个类的职责划分清晰,分开声明,标准是封装变化点
总结: 通过类封装数据(字段,属性,方法,构造方法,静态数据等)
通过类的方法(一定的访问级别封装,提供一个方法)
依据变化点设计每一个类(高内聚,低耦合,单一职责)
继承(extends,直译:扩展,延伸)
定义:重用基类的功能,在此基础上扩展。(功能上的扩展(继承),概念上的扩展(抽象))
优点: 复用代码、 统一概念 (以层次化的继承去管理类,单一继承原则)
缺点:耦合度高(父级改变无需通知子级别),切换不灵活。
使用场景: 1. is a 的关系,抽象和的具体的关系
2.概念上的扩展,想要一个东西去代表更多类型共性的时候用继承。
3.具有很多相同的代码
多态
定义:基类同一种动作或者行为(父类型的引用调用同一方法),在不同的子类上有不同的实现。
继承将相关的概念共性进行抽象,并提供一种复用的方式;多态在共性的基础上,体现类型及行为的个性化,即一个行为有多个不同的实现。
实现方式:
1.抽象:抽象类的引用指向实现类的对象,调用抽象类的(abstract)方法,执行子类的重写(override)方法
2.虚方法: 基类引用指向派生类对象,调用虚(virtual)方法执行派生类的重写(override)方法.
3.接口:接口(interface)的引用,指向实现类的对象,调用接口方法,执行实现类的重写方法。
4.提现几个类的共性用继承,提现各个类的特性用多态。
5.抽象方法,虚方法,接口方法,让子类区去重写方法。
重写原理:关键字:abstract virtual override
1.在子类方法表中添加新记录
2.修改父级方法表地址(覆盖父类方法)
3.调用父类(abstract,virtual)方法,执行子类(override)方法
注:(调用子类方法,执行子类方法)
方法隐藏:关键字:abstract virtual override new
1.在子类方法表中添加新记录(没有覆盖父类方法)
2.调用子类方法,执行子类(new)方法
注:(调用父类方法,执行父类方法)
绑定:类型与关联的方法的调用关系,一个类能调用那些方法。
静态绑定:指调用关系的编译期确定(运行之前)不占用运行时间,编译速度快.方法隐藏是静态绑定.
动态绑定:指调用关系在运行期确定(编译之后)占用运行时间,更加灵活.方法重写是动态绑定.
---------------------------------------------------------------------------------------------------------------------------------
在unity中子类附加到物体中,创建子类对象,相当于通过子类型引用调用父类脚本
方法隐藏,通过方法体内部的Base()关键字调用父类方法。
/*
将yield以前的代码分配大MoveNext方法中,将return 后面 的数据分配到Current中
调用MoveNext方法时执行,执行到yield暂时离开,再次调用moveNext方法继续执行。
*/