7. 类和对象
- 要深刻理解类和对象的含义,这是C#的精髓
以下这个实例很好的显示了类和对象的关系
class Circle //定义了类Circle
{
int radius;
double Area()
{
return Math.PI * radius * radius;
}
}
Circle c; //创建Circle变量
c = new Circle(); //初始化,new关键字新建类的实例,即“对象”
类和对象不要混淆,类是类型的定义,对象则是该类型的实例,同一个类可以有多个实例
-
封装:是定义类时的重要原则,即使用类的程序不应该关心类内部如何工作,只需要创建类的实例(即对象)并调用类的方法。
封装有两个目的- 将方法和数据合并到类中
- 控制对方法和数据的访问,也就是为了控制类的使用
-
怎么样控制对方法和数据的访问?
- 只能从类内部访问的方法和字段是私有的,即声明前加
private
关键字。该关键字默认 - 能从类外部访问的声明前加
public
关键字
- 只能从类内部访问的方法和字段是私有的,即声明前加
-
理解构造器
构造器是创建对象时自动运行的方法,它与类同名,能获取参数,但不能返回任何值,每个类至少要一个构造器,如果不提供构造器,编译器会自动生成一个什么都不做的默认构造器,如下代码
class Circle
{
private int radius;
public Circle() //默认构造器,为公共构造器
{
radius = 0;
}
public double Area()
{
...
}
}
添加公共构造器后,Circle类就可以使用了
- 重载构造器:构造器在本质上是方法,所以支持重载,在上例中,可以再写一个构造器如下:
public Circle(int initialRadius) //新的构造器,带有实参
{
radius = initialRadius;
}
Circle c;
c = new Circle(45); //使用了新的构造器创建了新的Circle对象,这时候radius为45
const
创建静态字段
只有数值类型、字符串类型和枚举类型的字段才可以用const
声明- 这里想把构造器学习得更透一点,因为C#的类使用中会有大量的构造器出现
- 构造器是一种特殊的方法:首先,构造器的名称必须和类相同;其次,构造器没有返回,
void
也不能有 - 构造器最主要的作用就是给类的变量赋值,初始化
- 一个类必须要有构造器,如果你不写,那编译器会自动给你写一个没有任何参数的构造器
- 这个理解不知道对不对,我们在声明类的时候有时候只能声明变量的种类,无法给它赋值,所以要利用构造器来做赋值和初始化