《asp.net 2.0 开发指南》读书笔记之三 4.5 面向对象的特性

来源:互联网 发布:mac改用户名丢失管理员 编辑:程序博客网 时间:2024/04/28 03:08

4.5 面向对象的特性

4.5.1 类

//一种数据结构,include 数据成员(常数和字段),函数成员(方法,属性,事件,索引器,运算符,实例构造函数,静态构造函数和析构函数),嵌套类型。支持继承。(*继承是一种机制,使派生类可对基类进行扩展和专用化*)

attributes class-modifiers class identifier class-base class-body;

修饰符:

new - 适用嵌套类。表示所修饰类会把继承下来的同名成员隐藏起来。(*if new 修饰符出现在一个类声明中,而该声明不是一个嵌套类声明,则导致一个编译出错*)

public - 该类不受访问限制

producted - 该问范围限定于所属于类或派生的子类。

internal - 访问范围限定于所在类

private - 访问范围限定于所属的类型,(只有.net中的应用程序或库才能访问)

abstract - 抽象类,用于表示所修饰的类是不是完整的,只能用作基类。

sealed - 密封类,(访止从所修饰的类派生出其他类。*密封类不能同时为抽象类*)

一个类的成员分为下列几种类型

常数--与该类相关联的常数值

字段--该类的变量

方法--用于实现可由该类执行的计算和操作

属性--用于定义一些命名特性,通过它来读取和写入相关的特性。

事件--用于定义可由该类生成的通知

索引器--使该类的实例可按与数组相同的(语法)方式进行索引。

运算符--用于定义表达式运算符,通过对该类的实例进行运算。

实例构造函数--用于规定在初始化该类的实例进需要做什么。

析构函数--用于规定在永久地放弃该类的一个实例之前需要做什么

静态构造函数--用于规定在初始化该类自身需要做什么。

类型--用于表示一些类型,它们是该类的局部类型

//*函数成员(包含执行代码的成员)

函数成员包括:方法,属性,事件,索引器,运算符,实例和构造函数,析构函数,静态构造函数。

//*实例构造函数,静态构造函数和析构函数必须具有与直接封闭它们的类相同的名称

//类的继承成员不是类的声明空间的组成部分。SO,一个派生类可以使用与所继承的成员相同的名称或签名来声明自己的新成员(*同时也隐藏了被继承的同名成员*)

4.5.2 属性

//属性是一种用于访问对象或类的特性的成员。

//*属性的示例包括字符串的长度、字体的大小、窗口的标题、客户的名称。属性是字段的自然扩展,两者都具有关联类型的命名成员,而且访问字段和属性的语法是相同的。与字段不同,属性不表示存储位置。相反 ,属性有访问器,这些访问器指定在它们的值被读取或写入时需执行的语句。属性提供一种机制,它把读取和写入对象的某些特性与一些操作关联起来,甚至可以对此类特性进行计算。

属性声明语法代码

attributes property-modifiers type member-name
{accessor-declaratoions}

//属性访问修饰符(property-modifiers):new,public,protected,internal,private,static,virtual,sealed,override,abstract,extern.

//*static,virtual,abstract,override不能同时使用。

(* override 要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override 修饰符*)

//属性声明包含extern修饰符时,该属性为外部属性。

//*外部属性不提供任何实现的实现,SO它的每个访问器声明都仅有一个分号。

//属性声明中的类型 type,用于指定该声明所引入的属性的类型,而成员名则指定该属性的名称。除该属性是一个显示的接口成员实现,否成员名就只是一个标识符。属性的类型必须与属性本身具有同样的可访问性。属性并不归类为变量。不能将属性作为ref或out参数传递。

string tempName="TOM";

public string Name

{
 get
 {
  return tempName;
 }

 set
 {
 tempName=value;
 }
}

//*声明一个简单属性Name,该属性是一个不受访问限制的,可读写属性,并且属性值类型是字符串string,默认值是"TOM".

 

4.5.3 方法

attibutes method-modifiers return-type member-name (formal parametr-list)) method-body
方法是一种用于实现可以由对象或类执行的计算或操作的成员。

//修饰符method-modifiers与属性的修饰符相同.

//对于abstract和extern方法,方法体只有一个分号。

//对于所有其他方法,方法体由一个块组成,该块用于指定在调用方法时要执行哪些语句。

方法声明的返回类型是return-type,用于指定由该方法计算和返回的值的类型。如方法不返回一个值,返回类型为void.

//*一个显式接口成员实现,成员名应由接口类型后跟一个"."和一个标识符组成.

//可选的形参表formal paarameter-list 用于指定方法的参数.

//方法的参数有4种类型:值参数、引用型参数、输出参数、数组型参数。

一个方法的签名由它的名称以及它的形参的数目、每个形参的修饰符和类型组成。

//*返回类型不是方法签名的组成部分,形参的名称也不是。

EG:

public string GetName(int unitID)
{
 DoSomeWork();
}

//* 声明了一个名为GetName的简单方法。该方法的返回值是字符串类型,并包含一个值参数unitID.


 

 4.5.4 事件

事件是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。

//事件就是类或者对象用来“发出通知”的成员。通过提供事件句柄,可以把事件和执行代码联系在一起。

attributes event-modifiers event type variable-declarators;

attributes event-modifiers event type member-name

{event-accessor-declarations}

//*事件的声明中可以包含事件访问说明,或者依靠编译器自动提供一个访问器。

//事件所声明的类型必须是一个委托类型,委托类型应预应声明。

//事件声明中可以包含事件访问器声明。

如果声明中没有包含事件访问器声明,对于非外部,非抽象事件,编译器将自动提供它们:对于外部事件,访问器由外部提供,一个省略了事

件访问器声明中的属性和修饰符适用于定义一个或多个事件(每个变量声明符各表示一个事件).一个事件声明的属性和修饰符适用于所有由该

事件声明所声明的成员。

EG:

public delegate void EventHandler (object sender,EventArgs e);

public class Button:Control

{
 public event EventHanler Click;
}

public classs LoginDialog:Form

{
 Button OkButtion;
 public LoginDialog()
 {
  OkButton=new Button(...);
  OkButtion.Click+=new EventHandler(OkButtonClick);
 }
 void OkButtonClick(object sender,EventArgs e)
 {
  //处理OkButton.Click事件
 }
}

定义一个委托EventHandler,然后为Button 控件设置Click事件,最后在LoginDialog的实例构造函数中创建一个Button实例,并将事件处理

程序附加到Click事件。