类容纳的信息存储在字段中,类提供的功能用方法实现。
封装是定义类的重要原则。它的中心思想是:使用类的程序不应关心类内部如何工作。程序只需创建类的实例并调用类的方法。因此,封装有时称为信息隐藏,它实际有下面两个目的:
①将方法和数据合并到类中;换言之,为了支持分类。
②控制对方法和数据的访问;换言之,为了控制类的使用。
类主体包含普通的方法和字段。记住,C#术语将类中的变量称为字段。
类是建筑蓝图,对象是按照蓝图建造的房子。同一个类可以有多个对象,正如同一张蓝图可以建造多个房子。
控制可访问性
只允许从类的内部访问的方法和字段是私有的(private)
方法和字段假如既能从类的内部访问,也能从外部访问,就说它是公共的(public)
使用构造器和重载构造器
构造器是在创建类的实例时自动运行的方法。它与类同名,能获取参数,但不能返回任何值。每个类至少要有一个构造器。如果不提供构造器,编译器会自动生成一个什么都不做的默认构造器。自己写默认构造器很容易--添加与类同名的公共方法,不返回任何值就可以。
class Circle
{
private in radius;
public Circle() //默认构造器
{
radius = 0;
}
public Circle(int initialRadius) //重载构造器
{
radius = initialRadius;
}
}
C#的一个重要特点,一旦为类写了任何构造器,编译器就不再自动生成默认构造器。所以,一旦写了构造器,让它接收一个或多个参数,同时还想要默认构造器,就必须亲手写一个(无参构造器)。
理解静态方法和数据
在C#中,所有的方法都必须在类的内部声明。但假如把方法或字段声明为static,就可以使用类名调用方法和访问字段。
静态字段能在类的所有对象之间共享(非静态字段则局部与类的实例)。在下列中,每次新建Cricle对象,Cricle构造器都使Cricle类的静态字段NumCircle递增1;
class Circle
{
private in radius;
public static int NumCircle;
public Circle() //默认构造器
{
radius = 0;
NumCircle++;
}
public Circle(int initialRadius) //重载构造器
{
radius = initialRadius;
NumCircle++;
}
}
使用const关键字声明的字段称为常量字段字段,是一种特殊的静态字段,它的值永远不会改变。
const字段虽然也是静态字段,但声明时不能用static关键字。
public const double PI = 3.14159265;
C#允许声明静态类,静态类只能包含静态成员。为了执行初始化,静态类允许包含一个默认构造器,前提是该构造器也被声明为静态。