C#入门系列 -- 类及其成员介绍
软件开发的两种最主要的方式为面向对象和面向过程。
面向过程的焦点主要放在指令的组合和优化上。
面向对象的焦点从优化指令转移到组织程序的数据和功能上。
定义
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类。
类作为一个有机不可分的整体,对外隐藏具体实现细节,从而实现可重用和易维护等特性,同时还提供了继承功能,支持子类获得父类特征。
类的出现使得程序员在求解现实问题中逐步从面向过程上升到了面向对象。
类(Class)是一个能存储数据并执行代码的数据结构,是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事物。
类包括以下内容:
-
数据成员: 数据成员用来存储与类或对象相关的数据。数据成员通常模拟该类所表示的现实世界事物的特性。
-
函数成员: 函数成员执行代码,通常模拟类所表示的现实世界事物的功能和操作。
一个C#类可以有任意数目的数据成员和函数成员,类是用户自定义数据类型。
C# 定义类的一般形式为:
[类修饰符] class 类名
{
成员列表;
}
大括号括起来的部分称为类体,同时大括号作为类成员的边界符,所有类的成员必须在大括号内进行声明。
没有任何成员的类称为空类。
类定义与结构体类型定义一样,系统不会为它分配存储空间。
修饰符
类修饰符及其含义:
修饰符 | 含义 |
---|---|
public | 访问不受限制 |
private | 访问范围限定于它所属的类型 |
protected | 访问范围限定于它所属的类或从该类派生的类型 |
internal | 访问范围限定于此程序 |
sealed | 适用于密封类。用于防止从所修饰的类派生出其他类 |
new | 适用于嵌套类。它指定类隐藏同名的继承成员 |
abstract | 用于表示所修饰的类是不完整的,并且它只能用作基类,即表示该类为抽象类 |
static | 用于标记静态类。静态类不能实例化,不能用作类型,而且仅可以包含静态成员。 |
同一修饰符在一个类声明中多次出现会编译出错。常见的类声明中只涉及4个访问修饰符,最常用的可访问性级别有:public和internal,类的默认可访问级别为public。
-
所有显式声明在类中的成员都是互相可见的,无论这些成员具有何种访问控制属性;
-
类的成员不会具有比类的整体更开放的访问权限;
-
访问修饰符可以以任意顺序出现零次或多次,一个访问修饰符只修饰当前的一个类成员。
-
如果一个成员在声明时没有携带任何访问修饰符,则默认它是私有成员。
成员定义
数据成员的一般定义形式;
类在定义时必须给出各数据成员的声明,声明数据成员的一般形式为:
class 类名
{
……
访问修饰符 数据成员类型 数据成员名称列表;
……
}
函数成员的一般定义形式:
class 类名
{
……
访问修饰符 返回类型 成员函数名(形式参数列表)
{
函数体
}
……
}
类的函数成员具备访问类数据成员的权限,一般被作为类与外界交互的接口。
声明在类中的成员对系统的不同部分可见,这依赖于类声明中指派给它的访问修饰符。
类的每个数据成员和函数成员都有访问控制属性,决定可对之访问的访问源有那些。
静态成员
针对成员定义时是否使用关键字static进行修饰,可以将类的成员分为实例成员和静态成员。
静态成员与类而不是类对象相关。
当字段、方法、属性、事件、运算符或构造函数声明中含有static修饰符时,它声明静态成员。
类的常量成员会隐式地声明静态成员。
静态成员具有下列特征:
- 使用
类名.成员名
的形式进行引用; - 静态字段的存储由类的所有对象共享,只有一个副本;
- 静态函数成员不能作用于具体的对象,不能使用this访问器访问。
实例成员
实例成员有时称为非静态成员,它与类的对象相关。
当字段、方法、属性、事件、索引器、构造函数或析构函数的声明中不包含static修饰符时,它声明为实例成员。
实例成员具有以下特点:
-
使用
类对象名.成员名
的形式进行引用; -
类的每个对象分别包含一组该类的所有实例字段;实例函数成员作用于类的给定对象,可借助this访问器访
问。
- 代码示例
class Test
{
// 私有数据成员 -- 外部不能直接访问
private int a;
// 公开数据成员 -- 外部可通过实例访问
public int B;
// 公开静态数据成员 -- 访问不受限制
public static int C;
// 受保护的数据成员 -- 外部不能直接访问,但其子类可以访问
protected int D;
// 内部数据成员 -- 程序集内可以访问
internal int E;
}
- 点赞
- 收藏
- 关注作者
评论(0)