08面向对象强化

1、面向对象

什么事面向对象?一种分析问题的方式,增强了程序的可扩展性

面向对象三大特性:封装、继承、多态

什么是类?什么事对象?类和对象的区别?

是模子,确定对象将会拥有的特性(属性)和行为(方法)

对象是一个能够看的到、摸得着的具体实体——万物皆对象

类是模具,创建对象的模具,抽象的。对象是实体的,是类的具体实例。对象具有属性(特征)和方法(行为)

  • 类是一种数据类型,用户定义的数据类型
  • 类组成:字段、属性、方法、构造函数等

类中包含了数据(用字段表示)与行为(用方法(函数、功能)表示,方法为一块具有名称的代码)

关键字:this    当前对象        base    父类对象

 
2、封装继承多态介绍
封装
  • 属性封装了字段
  • 方法的多个参数封装成了一个对象
  • 将一堆代码封装到了一个方法中
  • 将一些功能封装到了几个类中
  • 将一些具有相同功能的代码封装到了一个程序集中(dll、exe)并且对外提供统一的访问接口。(属性名、方法名等)
 
继承(是指类与类之间的关系)
  •  LSP里氏转换原则
  • 类的单根性继承性、传递性、继承时构造函数的问题(:this() :base())。构造函数不能被继承。
  • 所有类都直接或间接的继承自 object
 

多态
    多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化

 
 
 
虚方法,抽象方法
 
关于虚方法需要注意的几点
  • 父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
  • 虚方法在父类中必须有实现,哪怕是空实现(意思是必须有方法体)
  • 虚方法子类可以重写(override),也可以不重写
 
关于抽象方法需要注意的几点
  • 需要用 abstract 关键字标记
  • 抽象方法不能有任何方法实现(不能有方法体)
  • 抽象成员必须包含在抽象类中
  • 由于抽象成员没有任何实现,所以子类必须将抽象成员重写
  • 抽象类不能实例化
  • 抽象类的作用:抽象类的作用就是为了让子类继承
  • 抽象类中可以包括抽象成员,可以包括有具体代码的成员
  • 还有抽象方法不能用 static 修饰
 
接口
  • 接口中只能包含方法(属性、事件、索引器也都是方法
  • 接口中的成员都不能有任何实现
  • 接口不能被实例化
  • 接口中的成员不能有任何访问修饰符。(默认为public)
  • 实现接口的子类必须将接口中的所有成员全都实现
  • 子类实现接口的方法是,不需要任何关键字,直接实现即可
  • 接口存在的意义就是为了多态

接口解决了类的多继承问题

以后体积庞大的问题

显式实现接口

 

小总结

五个访问修饰符

  • private    当前类中可以访问,类中成员的默认访问修饰符
  • protected    当前类及子类中可以访问(在继承中使用)
  • interna    当前程序集内部可以访问
  • protected internal    当前程序集或子类中(不同程序集也可以访问)
  • public    任何地方
字段和属性及索引器
添加引用和导入命名空间
 
静态类

静态类不能被实例化:abstract

静态类不能被继承:    sealed

sealed关键字,表示不能被继承。(密封类)

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 





原文地址:https://www.cnblogs.com/pirates/p/4550067.html