第六章 属性和索引器

一、属性

1.属性的目的:验证对字段的赋值,以提供对类中字段的保护

2.作用:检索和设置字段的值

3.优点

·实现了数据的封装

 ① set 用于检查代码只存在于一个地方,而调用的地方有多处

这样只修改一处代码而避免了多处代码修改的复杂操作

 ② 此乃封装对程序的作用,进行小修改而避免大修改,使程序可靠且易于维护

③ 属性应尽量多的使用,每声明一个字段都应开发相应的属性 

·保证了数据的安全性

4.用法:用get()访问器(取值),set()访问器(写值),value(内置参数)

 ·通常将类中的字段设置为private,将属性设置为public,用属性来访问字段或为其赋值

5.编码标准:

·帕斯卡命名法,如Name,Length

·不能冠以set或get(属性一般用名词命名,方法用动词命名)

6.分类

·只有set访问器,表明属性的值只能进行设置而不能读写

·只有get访问器,表明属性的值是只读的,不能改写

·同时具有set和get访问器,表明属性的值的读写都是允许的

·静态属性:get(),set()访问器只能访问类的静态成员

·除了使用abstract修饰符的抽象属性的每个访问器的执行体中只有分号“;”,其他所有属性的get访问器都通过return来读取属性的值,set访问器都通过value来设置属性的值

二、索引器

1.作用:为数组定义索引后,可以通过指定类对象的索引来直接访问数组

·简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的  类。显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件  或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的。

2.注意:只有一个元素的数组,没有必要使用索引器检索。使用索引器一般都是针对类的数组字段

3.定义索引器

·有返回值(和方法一样)

·可以重载(和方法一样),使一个类有多个索引器,通过指定不同索引类型实现不同的方法调用(返回类型不作为重载的依据)

4.使用索引器

·像访问数组一样访问集合或者类的数组

5.优点

·索引器是一个特殊的属性,具有属性的优点

·使客户端代码更简洁,可读性更强

三、属性和索引器小结

<1>定义

属性的定义:
访问修饰符 返回类型 属性名


      get{语句集合}
      set{语句集合}

索引器的定义:

访问修饰符 返回类型 this[参数类型 参数...]

       get{语句集合}
       set{语句集合}

<2>

索引器使得对象可按照与数组相似的方法进行索引。
this关键字用于定义索引器。
get 访问器返回值。set 访问器分配值。
value 关键字用于定义由 set 索引器分配的值。
索引器不必根据整数值进行索引,由你决定如何定义特定的查找机制。
索引器可被重载。
<3>、属性和索引器的主要区别:
a、类的每一个属性都必须拥有唯一的名称,而类里定义的每一个索引器都必须拥有唯一的签名(signature)或者参数列表(这样就可以实现索引器重载)。
b、属性可以是static(静态的)而索引器则必须是实例成员。