第五章 面向对象编程
一、什么是面向对象
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等
·使用完整声明创建嵌套类型的新实例的名称