一、复习
1、类和对象的概念
2、字段的使用
3、操行实训:Circle类创建
二、新课
(一)、常数和只读字段
1)常数
常数就是其值不能改变的字段。常数也是类的成员之一,它表示一个常数值:一个可以在编译时计算的值。虽然我们把常数是当作静态成员,但常数的声明语句中不要求使用static修饰符,可以通过类访问常数。
2)只读字段
在将某些东西定义为常数时需要记住两个原则:
● 常数成员的值是一个在编译时计算的值。
● 要想将字段声明为常数,只需在被声明的字段前指定const关键字。
2、成员访问控制
访问修饰符public和private控制对类的字段、属性和方法的访问。正如前面所提到的,公有(public)方法的主要目的是让类的客户了解该类所提供的服务,而不必关心该类如何实现它的任务。因而,类的客户不能直接地访问类的private字段、private属性和private方法。通过关键字private限制对类成员的访问称为信息隐藏。
规则:
- 命名空间总是默认的public
- 类总是默认的public
- 类成员默认为private
- 对于一个类成员只能使用一个访问修饰符。private internal尽管是两个单词,但它是单个访问修饰符。
- 成员的作用域永远不超出包含它的类。
(二)属性
使用访问方法是一种不错的技术,几种面向对象语言都使用这种技术。但是C#提供了一种更为丰富的机制:属性。属性具有访问方法一样的能力,而且在客户端看起来像字段。
属性是一种用于访问对象或类的特性的成员。属性是字段的自然扩展,两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。属性实际上是方法,但对于类的用户看起来像字段。
实训演示:员工类创建属性
实训练习:Circle属性创建
属性声明:属性是对象或类的特性。与字段不同,属性有访问器,这些访问器指定要再它们的值被读取或写入是执行的语句。
类型 属性名 {访问器声明}
get 访问器
相当于一个无参方法。执行get访问器相当于读取字段的值。
Set 访问器
相当于一个void方法。在set访问器中,新的属性值通过set访问器的参数传递。
- 只带有get访问器的属性称为只读属性。无法对只读属性赋值
- 只带有set访问器的属性称为只写属性。
- 同时带有get和set访问器的属性为读写属性。
Circle类代码(部分)
类的作用域
一个类的字段、属性和方法属于该类的作用域。在类的作用域中,该类的所有方法和属性都可以访问该类的成员(如字段、方法和属性),并且可以直接通过名称进行引用(静态方法和静态属性例外,因为静态方法和静态属性并不操作对象,所以,不能用静态方法和静态属性来访问实例字段)。在类的作用域外部,不能通过名称直接引用类成员,必须通过该类或该类的对象和点操作符(称为类成员存取操作符)才能访问可见的类成员(如public成员),即在类的作用域外部,类成员必须通过“对象名.成员名”来访问。