这四种成员都是用来表达数据的。
1.字段(field)
(1)什么是字段
字段是一种表示与对象或类型(类与结构体)关联的变量。为一个对象或类型存储数据。多个字段组合起来可以表示对象或类型的状态。
字段是类型的成员,旧称成员变量。
与对象相关联的字段亦称“实例字段”,隶属于实例对象。
与类型关联的字段称为“静态字段”,由static修饰,表示类型状态。
(2)字段的声明
字段是类的成员,声明于类体里。
构成:可选的特性+可选的字段修饰符+字段数据类型+变量声明器(变量名/变量名加初始化器);
尽管字段声明带有分号,但它不是语句。
字段的名字一定是名词。
(3)字段初始值
无显式初始化时,字段获得其类型的默认值,所以字段永远都不会未被初始化。
实例字段初始化时机——对象创建时。
静态字段初始化的时机——类型被加载(load)时,即静态构造器被加载的时候。
(4)只读字段
实例只读字段,唯一的初始化机会是在实例构造器里为它赋值。
静态只读字段,初始化机会只有一个,在静态构造器里。
2.属性(porperty)
(1)什么是属性
是一种用于访问对象或类型的特征的成员,特征反映了状态。
属性是字段的自然扩展。对外可以实时动态的计算出对象或类型的特征。对内可以防止数据的污染。
属性由get何set方法对进化而来。
(2)属性如何声明
完整声明——后台(back)与访问器(注意使用code snippet和refactor工具),可选特性+属性的修饰符+属性数据类型+属性名字{get和或set}
简略声明——只有访问器。
动态计算值的属性。
注意实例属性和静态属性。
属性的名字一定是名词。
只读属性——只有getter没有setter
(3)属性与字段的关系
一般情况下,它们都用于表示实体(对象或类型)的状态。
属性大多数情况下是字段包装器。
建议:永远使用属性而不是字段来暴露数据,即字段永远是private。
3.索引器
(1)什么是索引器
索引器是这样一种成员:它使对象能够用与数组相同的方式(即下标)进行索引。
索引器一般用于集合类型里。
4.常量
(1)什么是常量
常量是表示常量值,即可以编译时计算的值的类成员。
常量属于类型而不是对象,即没有实例常量。
注意区分成员常量(类.常量的名字)与局部常量(用于组成方法体中的算法)。
4.各种只读应用的场景:
常量——用于提高程序可读性和执行效率
只读字段——为了防止对象的值被改变
只读属性——向外暴露不允许修改的数据,功能与常量有一些重叠。
静态只读字段——当希望成为常量的值其类型不能被常量声明接受时(类/自定义结构体)。