标签:
1、 为什么要有面向对象?
(1) 增加代码重用。
(2)降低维护负担,将具备独特性质的代码封装起来,修改程序时,相互不会影响。
2、数据封装用来解决全局变量不易维护的问题。
3、多态:为了加强继承的弹性,常常需要子类对父类的方法进行重写(函数名称不变)。
4、抽象化是为了降低程序版本更新后的维护负担。使功能的提供者和使用者分开,各自独立,彼此不受影响。
5、为了抽达到象化,提供接口用于建立功能提供者和使用者之间的规范。功能提供者和使用者按照这个规范来提供、使用这些功能。这个功用的规范就是接口。接口中定义了常量、函数名称、函数参数等。因此接口不改变的情况下,功能提供者就可以任意的改写函数中的代码,而不会影响到使用者使用这些功能。
抽象化的优点:
.可编写函数处理有相同接口的类
例如:员工薪水的发放:按照职位、工龄发放,只需要定义一个计算薪水的接口,然后分别实现。
.用于未来功能的扩展。
.让功能提供者和使用者相互独立。
6、通常继承应用在公司的内部开发上,以重复使用其他设计师编写好的代码;而接口多半是用于两个部门或两家以上的公司,用于分别开发自己的应用程序时建立的公用的规范。
7、类是数据封装的基本单位。是重复使用的最小单位。
类的成员:变量、方法、属性、事件、常数
对象是类在内存中的实体,类用于描述对象在内存中的数据。也就是说类用于定义对象的长相。
8、静态方法可以不建立类的对象,即不用new实例化,而用类直接调用:类名.方法名()
Static变量通常用于配置全局共用的区块
9、结构和类的区别:结构主要由简单的数值类型组合而成,配置在堆栈中。类属于参考类型,配置在堆积中。结构不支持继承。
10、数据封装:使用类进行封装。
封装目的:数据和方法被封装起来,通过方法存取数据。可以控制数据的存取方式。
11、访问修饰符:
public:所有
private:类中的方法和成员只能在此类中使用,外部不能使用。
protected:类自身可以使用、子类也可以使用。protected并不是被派生类随心所欲的访问,访问是有条件的:访问必须是子类类型发生时,父类的protecte成员才能够被访问
internal:同一个.NET Assembly中可以使用
protected internal:只限定在目前的项目或继承自此类的成员才可以使用
注意:在声明方法是,默认识private
一个好的面向对象的设计,通常把所有的数据成员定义为private,然后提供方法来存取这些数据
12、数据封装的目的:易于控制数据、容易修改。
13、静态成员:
对象中的数据都是对象私有的,只有对象才能操作这些数据,其他对象不能操作。那么有时候把所有对象共用的数据保存在每一个对象中并不是很好,比如一个公司的所有员工同属于这个公司,若在员工类中定义一个存放公司名称的成员变量,那么,在实例化对象后,都需要用:对象名.方法名() 来存取公司名称信息,这样若公司名称改变了,维护起来比较麻烦,并且计算机还要分配内存、硬盘空间等,为了解决这个问题,在实现的时候会将这种数据放在全局的内存区块上,也就是说,这个数据不是对象能够操作的,而是类级别的,对象操作不了。但是,全局的数据并不是保存在类中的,因此,不能够使用封装的技巧使用全局变量,取而代之的是以静态static的方式来描述这样的数据。静态类就是用来描述类中共用信息的。
静态数据是在类中声明的,所以能够体现封装的特性。就算这个定义了静态数据的类没有被实例化,该静态数据还是存在的。所以,不用建立对象实体就可以对静态数据进行操作。
编译器会在类载入是自动初始化static变量,也就是说,若静态的成员变量没有被赋值,那么在编译时,编译器会自动给变量赋值。String类型是空字符串,int类型是0,bool类型是false,生命周期被限定在应用程序的生命周期中
14、静态方法:
对静态数据进行操作需要使用静态方法,静态方法属于类,是类级别的,不是对象能够操作的,静态方法不能用this保留字
通常,编译器Compiler在编译时会将静态数据和静态方法当做全局变量或全局函数来对待。默认的静态数据是private的
静态方法不能够存取非静态数据和非静态方法。
windows应用程序中Main()方法定义为public static,不需要实例化Runtime就可以直接运行Main().静态方法只能用类调用,非静态方法用实例调用。
标签:
原文地址:http://www.cnblogs.com/gengxin/p/5191408.html