第五章 面向对象编程

一、什么是面向对象

1.面向对象简介

·自然界中的任何一个实体都可以看做一个对象,可以用其共同特征来描述它

·非实体也可以看成某种对象(逻辑上的实体)

·自然界的现象就是许许多多的同类与不同类的对象在相互作用

·一个对象包含一个或多个其他的对象

·一个对象可以使用一个或多个对象

·面向对象解决问题的方法步骤:

 ①分析问题,找到相应对象

 ②抽象出对象的属性和特点

 ③划分出类

 ④确定类与类的关系

 ⑤用类来定义程序结构

2.什么是类:类定义了一系列相似对象的特点(属性)和功能(方法),是一种新的类型

·定义:Eg: class Student

 {

public string name;

public int age;

public int number;

}

·实例化:类型名  变量名= new 类型名()

Student  stu  = new Student();

·使用:stu.name = “张三”;

stu.age = 20;

stu.number=200102;

3.什么是对象:一个类的实例

·每个对象在内存中都由自己的存储空间,并且彼此间独立地运行

·通过new关键字为对象在内存(堆heap)中分配空间

4.封装

·封装是面向对象的三大特征(封装、继承、多态)之一

·封装是定义类的一个重要的原则

·使用类的程序员不必关心类的内部是如何实现的

·通过封装实现两个目的

 ①将数据与方法紧密结合

 ②控制可访问性,实现数据隐藏

二、定义类

1.类块

2.类的成员

·字段,属性,方法,事件,索引器,构造函数,析构函数,嵌套类型

3.访问修饰符

·访问性由高到低:public>>internal>>protected>>private

·如果不指定访问修饰符:

 ①类的默认访问修饰符:internal

 ②类成员的默认访问修饰符:private

 附表说明:

4.构造函数

·作用:用来自动初始化成员变量,如果需要也可执行其他动作

·调用:每次创建类对象时都会调用此方法为类成员赋初值

·语法:与类同名,且不返回任何值,访问修饰符可写可不写(默认为private)

·无参数的构造函数称为默认构造函数(又称无参构造函数)

·如果不声明,C#编译器会自动创建一个构造函数

·如果声明带参数的构造函数,编译器就不再产生默认构造函数,如果此时还需要无参数的构造函数,需要自己声明。

命名规则:

 ①帕斯卡命名法:首字母大写:MyName(枚举名,结构名,类名,方法名)

 ②驼命名法:myName(数组,字段,参数(不要太长,全小写))

5.析构函数

·作用:用于执行清除操作的特殊方法

·不能显示或手工调用,只能由垃圾回收器自动调用

·语法:与构造函数相同,并在前面加~

·通常不推荐写析构函数,除非有必要手工释放的资源

三、使用对象

1.对象的声明和初始化

2.使用this关键字:在类内部引用当前实例

3.对象与内存

4.资源管理

5.类与结构的对比

四、静态类

·类可以声明为static,以指示它仅包含静态成员

·静态类不能使用new来创建(不能实例化),而是使用类名直接调用其成员

·静态类是密封的,不能被继承

·静态类中必须全是静态成员(包括字段,方法,构造函数),这些成员不属于某一

个实例,而是被所有实例共享

·静态成员通常用来表示不会随对象状态变化的数据或计算

·静态成员通过两种方法赋初值:

①声明时直接赋值 ②声明静态构造函数赋初值

·静态构造函数用于初始化任何静态数据,可以和类的构造器共存

·静态构造函数在第一个实例被创建之前调用

·静态构造函数不能有任何参数,没有访问修饰符

五、部分类

·使用partial关键字声明

·如果一个类非常大,可以使用partial将其分成两个部分类

六、嵌套类

·在类或结构的内部定义的类型称为嵌套类型

·嵌套类型默认为private,但可以设置为public ,protected ,internal等

·使用完整声明创建嵌套类型的新实例的名称