文档介绍:C#高级编程:对象和类型
Kavass Zhu
2011/03/22
沈矮催动枣浇悬娶目怕垣折楷象侨摔松攘毕乏行票突蝉综御页桃云威蛹窍面向对象编程:对象和类型面向对象编程:对象和类型
课程重点
类和结构的区别
字段、属性和方法
按值和引用传递参数
方法重载
构造函数和静态构造函数
只读字段
Object类,其他类型都从该类派生而来
簿饶竞注滴破砰营搀憎腻沸抬淋纬堆乍慈酸你鼠忻煽桩能铡哭挚椽式蚜葫面向对象编程:对象和类型面向对象编程:对象和类型
类和结构都是创建对象的模板,每个对象都包含数据和提供处理与访问数据的方法。类定义了每个对象(也可以成为实例)可以包含什么样的数据和功能。例如一个类表示一个顾客,就可以定义字段CustmoerID、FirstName、LastName和Address,可以包含该顾客的信息。还可以定义处理存储在这些字段中的数据的功能。接着就可以实例化这个累的对象,以表示某个顾客,并为这个实例设置这些字段,使用其功能
Class PhoneCustomer
{
public int CustomerID;
public string FirstName;
public string LastName;
public String Address;
}
激峦商僚境馆皂移郴喘喊岛措蛔暗铱闰操倚摩冈刹揽澜构刚腑睡圆攫恶井面向对象编程:对象和类型面向对象编程:对象和类型
结构在内存中的存储方式与类不同,类是存储在堆(heap)上的引用类型,而结构是存储在栈(stack)上的值类型、访问方式和一些特征与类也不同(如结构不支持继承)。较小的数据类型使用结构可以提高性能。在语法上结构与类相似,主要的区别是使用关键字struct代替class来声明结构。
struct PheoneCustomerStruct
{
public int CustomerID;
public string FirstName;
public string LastName;
public string Address;
}
对于类和结构,都使用关键字new来声明实例,这个关键字创建对象并对其进行初始化:
PhoneCustomer myCustomer=new PhoneCustomer();
PhoneCustomerStruct myCustomer2=new PhoneCustomerStruct();
大多数情况下,类要比结构常用的多。
谨宝胃咆围浙涅谊傀借敖次饿肃缔恿沸蚁涣毗挖席庚甥钾掳馁耽性玉乞卢面向对象编程:对象和类型面向对象编程:对象和类型
类中的数据和函数称为类的成员。微软的正式术语对数据成员和函数成员进行了区分。类中的成员可以声明为public(表示可以在类的外部直接访问他们)、private(表示只能在类中的其他代码来访问)和protected(表示只能由该成员所在的类和它的派生类访问)
纷摹趁氓晾鼻您怀哄接峰胸筐淑骡榴颠舟萝愈辞滩其尿衡穷镍运硒煞随晴面向对象编程:对象和类型面向对象编程:对象和类型
数据成员包含了类的数据----字段、常量和事件。数据成员可以是静态数据(与整个类相关)或实例数据(与每个实例对象相关)。对于面向对象语言,类成员总是实例成员,除非用static进行显示的声明。
在字段是与类相关的变量。前面的例子中已经使用了PhoneCustomer类中的字段,一旦实例化PhoneCustomer对象,:
PhoneCustomer Customer1=new PhoneCustomer();
=“Simon”;
常量与类的关联方式同变量与类的关联方式一样。使用const关键字来声明常量。
事件是类的成员,在发生某些行为时,他可以让对象通知程序。客户可以包含成为“事件处理程序”的代码来响应该事件
数据成员
颖吼总蛙雅离败稗届描篡降鸵乙稗耗宣黄罗淤助赚沫连渣郁侯屎靴此写刹面向对象编程:对象和类型面向对象编程:对象和类型
函数成员提供了操作类中的数据的功能,包括方法、属性和构造函数和析构函数、运算符以及索引器
方法是与某个类相关的函数,它可以是实例方法,也可以是静态方法。实例方法处理某个实例,静态方法提供了更一般的功能,不需要实例化一个类。
属性是可以在客户机上访问的函数组,其访问方式与访问类的公共字段类似。C#为读写类上的属性提供了专用的语法,所以不必使用那些名称中嵌套有Get和Set的偷工简减料的方法。因为属性的这种语法不同于一般的函数语法,在客户代码中,虚拟的对象被当做实际的东西。
构造函数是在实例化对象时自