今天学习的内容是第二本书上的:类 (每天一章的内容效果不是很好,正好有两本书,流程差不多,两天都看同样的位置效果更好些)
类的声明:
一个类的创建部分需要三个部分:命名空间、声明空间声明类、和构造函数
命名空间是区别不同程序集中得类,一般用于大型应用项目中不同程序集之间的调用。构造函数是定义类时必须创建的函数,即使在代码中不创建构造函数,默认创建的类也是有构造函数的。构造函数是相当于类的初始化
构造函数:名必须与类同名可以带参数
声明类的静态特征:
静态特征通常被称为属性
namespace ConsoleApplication6
{
class Cat
{
string color;
string type;
public Cat()
{
}
public string Color
{
get { return Color; }
set { Color = value; }
}
public string Type
{
get {return Type;}
set { Type = value; }
}
public int catWeight
{
get { return catWeight; }
set { catWeight = value; }
}
}
}
声明类的行为:
类的动态行为称为方法
public void Swarm() //猫爬树的方法
{
this.catWeight--;//每次爬树体重减1
}
private int prey() //猫捕食的方法
{
this.catWeight++;//每次捕食体重加1
return this.catWeight;//返回猫现在的体重
}
在类的方法中调用当前类,使用this关键字
字段其实就是一个变量,在类中实现数据传递功能,而属性则是类对外的特征,其实类可以通过访问这个类的属性,来获取或者设置两个属性的值,而字段则无法被其他类访问
一个类在使用之前必须将其进行实例化,才能调用其内容的方法和属性,但一旦这个方法或属性被定义为static就可以直接访问。
在属性被定义为static时,类内部的字段变量被定义为static
属性重载不能随意使用,它具备以下特点
.属性重载,不一定使用重载关键字“override”
.在子类中,定义要重载的属性时,其名称、类型、访问修饰符都应该与父类中得属性一致。
.如果父类中有两个属性访问器,则子类中的属性可以有两个,也可以有一个;但如果父类中只有一个,则子类中也必须有一个。
构造函数的名字必须和类名相同,构造函数没有返回类型,但构造函数可以有参数
析构函数:
class Grade
{
~Grade()
{
Console.Write("计算完成,释放对象完毕");
}
public int Sum(int a,int b)
{
return a+b;
}
}
通过~来定义析构函数,函数名与类名相同,函数内写明释放类对象时要进行的清理操作,输出一句话上面。
重载方法返回类型也可以不相同