今天的内容理论性太强了,根本没有多少代码 全是文字、有点混乱了
今天学习的内容是:面向对象的简介
OOP:object oriented programming(面向对象编程)
对象的含义:对象就是oop应用程序的一个组件部分。这个组成部分封装了部分应用程序可以是一个过程、一些数据、或一些更抽象的实体。建模语言:(Unified Modeling Language,UML)是为应用程序建模而设计的,从组成应用程序的对象,到他们执行的操作,到我们希望有的用例,应有尽有。
属性和字段:通过属性和字段访问对象中包含的数据。这个对象数据可以用于区分不同对象,因为同一个类的不同对象在属性和字段中存储了不同的值
对象的生命周期:
每个对象都有一个明确的生命周期,除了正在使用的正常状态之外,还有两个重要的阶段:构造函数和析构阶段
构造阶段:对象最初进行实例化的时期。这个初始化过程称为构造阶段,油构造函数完成。
析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存。这由析构函数完成。
构造函数:对象的初始化过程是自动完成的
c#中用new关键字来调用构造函数构造函数与字段和方法一样,可以是公共或私有的。在类外部的代码不能使用私有构造函数实例化对象,而必须使用公共构造函数。这样就可以要求类的用户使用非默认的构造函数(把默认构造函数设置为私有的)
析构函数:.net Fromework 使用析构函数清理对象,一般情况下,不需要提供析构函数的代码,而是由默认的析构函数自动执行操作。但是如果在删除对象实例前,需要完成一些重要的操作,就应提供特定的析构函数,如果变量超出了范围,代码就不能访问它,但该变量仍存在计算机内存的某个地方。只有在.net运行程序执行的其垃圾回收,进行清理时,该实例才被彻底的删除。
静态和实例类成员:
属性、方法和字段等成员是对象实例所特有的。此外还有静态成员,例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将他们看做是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。静态构造函数:
使用类中得静态成员时,需要预先初始化这些成员在声明时,可以给静态成员提供一个初始值,担忧时需要执行更复杂的初始化,或者在赋值、执行静态方法之前执行某些操作。使用静态构造函数可以执行类初始化任务。一个类只能有一个静态构造函数,该构造函数不能有访问修饰符,也不能有任何参数。静态构造函数不能直接调用,智能在下述情况执行:
.创建包含静态构造函数的类实例时
.访问包含静态构造函数的类的静态成员时在这两种情况下,会先调用静态构造函数,之后实例化类或访问静态成员。无论创建了多少个类实例,其静态构造函数都只能调用一次。
静态类:
静态类只能包含静态成员,不需要实例构造函数,因为按照定义,它根本不能实例化。但静态类可以有一个静态构造函数
OOP技术:对象的一些其他特性包括:
.接口
.继承 .多态性 .对象之间的关系 .运算符重载 .事件 .引用类型和值类型 接口:是把公共实例方法和属性组合起来,以封装特定功能的一个集合。一旦定义了接口,就可以在类中实现它。这样类就可以支持接口所指定所有的属性和成员。接口不能单独存在。不能像实例化一个类那样实例化接口。接口不能包含实现其成员的任何代码,二只有定义成员本身实现过程必须在实现接口的类中完成
IDisposable接口的对象必须实现其Dispose()方法,即他们必须提供这个放安防的代码。当不需要某个对象时,就调用这个方法释放重要的资源,c#允许使用一种可以使用这个方法得接口,using关键字可以在代码块中初始化使用重要资源的对象,会在这个代码块的末尾自动调动Dispose()方法 继承:任何类都可以从另一个类中继承,这就是说,这个类拥有它继承的类的所以成员。基类还可以定义为抽象类。抽象类不能直接实例化。要使用抽象类,必须继承这个类,抽象类可以有抽象成员,这些成员在基类中没有实现代码,这些实现代码必须在派生类中提供。
对象之间的关系:
.包含关系:一个类包含另一个类,这类似于继承关系,但包含类可以控制对包,含类的成员的访问,甚至在使用被包含类的成员进行其他处理
.集合关系:一个类用作另一个类的多个实例容器,这类似于对象数组,但集合有其他功能,包括索引、排序和重新设置大小等。值类型和引用类型:区别
.值类型在内存的一个地方存储他们自己和他们的内容。 .引用类型存储指向内存中其他某个位置的引用,而在另一个位置存储内容值类型总是包含一个值,而引用类型可以是NULL,表示他们不包含值。