在5种用户定义类型中,类类型(class)可能是最重要的。
类是一种活动的数据结构
在面向对象设计之前,程序猿们仅把程序当作指令的序列。那时的焦点主要放在指令的组合和优化上。随着面向对象(OO)的出现,焦点从优化指令转移到组织程序的数据和功能上来。程序的数据和功能被组织为逻辑上相关的数据项和函数的封装,称之为类。
类是一种能存储数据并执行代码的数据结构,它包含9种成员,分为两类。
1.数据成员:它存储与类和类的实例相关的数据。数据成员通常模拟该类所表示的现实世界事物的特性。
2.函数成员:它执行代码。函数成员通常模拟类嗦表示的现实世界事物的功能和操作。
程序和类
一个运行中的C#程序是一组相互作用的类型对象,它们中大部分是类的实例。
可以这么说:运行中的程序其实就是一组相互作用的对象。
不像16种预定义类型已经由C#定义,要使用类类型需要自己定义,通过编写类的声明来定义类。
类的声明定义新类的特征和成员。它并不创建类的实例,但创建了用于创建实例的模板。类声明提供下列内容:
- 类的名称
- 类的成员
- 类的特征
前两者很好理解,类的特征
类声明在日常使用中也被称为「类定义」。
类成员
类有9种成员,可见C#语言规范。9种成员分为两类:数据成员和函数成员。
字段和方法是最重要的类成员。前者是数据成员,后者是函数成员。
字段
字段是隶属于类的变量(记得C#中有4种变量么)。C#中所有的字段都必须在类型声明内部声明。和C/C++不同,不能在类型声明的外部声明全局变量。但是,C#中的静态字段有全局变量相似的功能。
方法
成员是具有名称的可执行代码块,也有一种未命名的匿名方法。
声明方法的最简语法包括一下部分:
-
返回类型:它声明方法返回值的类型。如果不返回值,则被指定为void。
-
名称 :方法的名称
-
参数列表:它由一对圆括号组成,如果有参数,它们被列在圆括号中,有逗号(,)隔开。
-
方法体:它由一堆大括号组成,大括号内包含代码(也可能不包括)
方法和字段一样,没有定义于类之外的全局方法。
创建变量和类的实例
声明变量时,会自动初始化变量为默认值。
声明类类型的变量(其实是所有引用类型变量)时,所分配的内存是用来保存引用的,而不是用来保存类对象实际数据的。要为实际数据分配内存,需要使用new运算符。
-
new运算符为任意指定类型的实例分配并初始化内存。它依据类型的不同从栈或者堆里分配。
-
使用new运算符组成一个对象创建表达式: new typeName(参数列表)
访问修饰符
C#中,类型、成员和其他实体都支持访问修饰符。
可访问性修饰符:它控制能够访问该「类型、成员和其他实体」的程序文本区域,即是其他地方能否访问它。
类中成员的可访问性:
1.默认private,即是以下两个声明都指定了private int成员
private int MyInt1; //显式声明为私有
int MyInt2; //隐式声明为私有
2.private即使在类的实例中也不能访问,只能在类的声明中访问。