面向对象
作者:互联网
what:在软件的分析设计中,遵循面向对象的设计原则 并且 使用封装继承,多态的技术,就是面向对象。
系列技术的统称:继承 多态 封装 类 对象。
why:
优点:
1.更贴近人的思维,程序设计变得简单。
2.有利于代码的复用和可维护性。
缺点:面向过程对比
1.前期设计复杂
2.代码调试麻烦
3.性能有所降低
主要思想:
分而治之;大任务 【大项目,复杂需求】
xx系统-> 子系统 ->组件模块
高内聚,低耦合。 联系紧密的存放在一个系统中, 联系不紧密的放在不同系统中 类 界面
封装变化
oop原则
1开闭原则--易扩展,不修改
2类的单一职责
8迪米特法则
面向对象的三大特性 c#
封装:
what:组织代码就是封装。 语句->方法 方法,字段—>类 类 ->组件 组件1,组件2->开发包 系统。
why:好处:方便代码的复用和维护。不同功能封装到不同的类中,出了问题,容易查找。
who/where/when: 程序员 时时刻刻都在使用。 添加脚本,类,魔板。
how:所有符合封装定义的做法都叫做封装。
继承:类的层次。
子类base 同类this 。子类有无参构造函数的时候父类必须也要有。
代码复用的基本方式:2种
继承:代码复用的基本方式
组合:代码服用的基本方式
共性:代码复用
不同:
继承: 代码复用 概念复用
组合:代码复用{整体 部分}
原则:使用组合而且继承(复用的最佳实践)
组合语法 class { B b}即在别的类中做成员。
实际问题的处理:
技巧 A B 1) is 判断 继承
2)is 不成立则 has 是否成立
多态:
abstract 抽象
virtual 虚方法
override 重写方法
sealed(密封)放类前,该类不能让任何类继承
放重写方法前,当前类子类不能重写该方法。
绑定:类型和关联的调用关系
系统确定一个类型能调用哪些方法的过程。就是绑定。
静态绑定:运行前就确定的。编译时绑定
动态绑定:运行中确定的。运行时绑定
c#中的抽象类的特征
抽象类不能实例化。(不能new 该类不能实例化,所以必须new 子类)但是 abstract class A{}; A[] aa = new A[3];可以此为数组语法。
可以包含虚方法。
抽象类可以包含抽象方法和抽象访问器。
不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继 承,而 abstract 修饰符要求对类进行继承。
从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
1.只有声明定义,没有实现的方法,就是抽象方法。
2.实现类必须实现所有的抽象方法。
抽象方法必须放到抽象类中或者接口中。
3.放在抽象类中的抽象方法 必须 加abstract 不能私有。
实现类实现抽象方法的方法必须带有override 不能私有。
接口:
interface创建的数据类型
接口名推荐使用“I”开头,其后首字母大写ISwitch
接口的特点:
接口是抽象的,接口是一组行为的抽象。(只有行为)
接口只关注行为,且不关注行为的实现,实现由类完成。
接口不关注数据(接口中不能有字段。只有行为即方法)。
2.接口是规范,定义一组对外的行为规范,要求他的实现类必须遵守。
3.实现类必须是接口的成员。
接口中的抽象成员不能加abstract。不能加访问修饰符。默认抽象默认公共。
when,why,where
1.扩展一个已有类 手机5个功能 发明了一个新功能
1)新功能做成接口 为了更多类的复用
2)新类:原来的类,接口
2.规范不同类型的行为,达到不同类型在行为上是一致的。
提取不同类别的共性行为,让这个行为得到最大复用。
接口语法特点:
能包含 :属性方法,事件,索引。不能包含字段
所有成员不能加访问修饰符,默认共有
实现类可以实现多个接口,且每个接口中所有成员都必须实现。
接口中的成员在实现类中以public的方式实现(除了显示实现)
接口的引用可以指向实现类的对象 接口 obj = new 实现类()。
接口的使用:
继承:
1.类继承类 单继承 类名:类名1 只能继承一个父类
2.类继承接口 多继承 称为 类实现接口
3.接口继承接口 用得少不能有实现 接口 1 :接口2 ,接口3
接口与接口可继承,且可多继承。
4.结构(struct)可以实现接口,但是不能继承
类继承接口实现方式:
1.隐式实现:
2..显式实现:
显式实现:在实现的成员前加接口名,并且不能加任何访问修饰符,默认private。
显式实现成员:只能通过接口类型的引用调用。
如son.Eye()就是通过接口调。
作用:
1.解决接口中成员对实现类不适用问题(很少用)
2.解决多接口实现二义性(很少用)
常用接口
IComparable常用比较接口
IComparer比较接口提供比较方法,常用于排序比较
IEnumerable 常用枚举器,使类型支持简单迭代
IEnumerator枚举器,支持movenext,自己可以控制迭代节奏
标签:继承,复用,接口,面向对象,抽象,方法,实现 来源: https://www.cnblogs.com/yc97gg/p/16363577.html