文章目录
类的定义
类是一种数据结构,它可以包含数据成员,函数成员。
类是一种数据类型
也代表着显示世界中的种类
类的构造函数与析构函数
- 无参构造函数
默认的构造函数就是无参的构造函数,当我们编写了有参构造函数,会替代默认的无参构造函数,若仍需要无参构造函数,只需显示编写即可。 默认的构造函数就是无参的构造函数,当我们编写了有参构造函数,会替代默认的无参构造函数,若仍需要无参构造函数,只需显示编写即可。 - 有参构造函数
根据需要定义与类中字段相应的构造函数 - 静态构造函数
静态构造函数只能用来构造静态成员
static Student(){
}
- 析构函数
对象释放内存空间时调用。
~ Student{
}
类声明(类定义)
-
类声明的位置
声明在命名空间,最常用声明在命名空间,最常用
声明在类的里面(成员类)
也可以声明在命名空间外 -
类修饰符
类修饰符 class 类名
类修饰符:new public protected internal private abstract sealed static
2.1 internal是访问级别限制在程序集中
2.2 public公开
2.3 private访问级别限制在类中
2.4 protected 子类可以访问,应用在方法上,跨程序集类成员的访问级别是受类访问级别限制的。
2.1 internal 和public
class前面什么都没有,默认级别是internal。
在两个项目A,B中,A应用了B,B中public修饰的类才能被A访问。
2.2 sealed
class 前面加sealed,这个类不能被继承
类的继承
- 继承的概念
子类对父类的成员全盘继承(构造器不被继承),并且对父类进行横向和纵向的扩展。横向扩展是成员的增加,纵向扩展是对父类方法版本的更新(重写)。
C#中一个类最多只有一个基类,子类的访问级别不能超过父类的访问级别。父类和子类的关系是 子类“ is a” 父类
class Person//父类
{
}
class Chinese : Person//Chines是子类
{
}
- 构造函数的执行顺序
当创建子类的实例时,会先调用父类的构造函数,然后才执行子类的构造函数
函数运行结果:
执行父类的构造函数
执行子类的构造函数
class Program
{
public static int pi = 12;
static void Main(string[] args)
{
Chinese chinese = new Chinese();
Console.ReadKey();
}
}
class Person//父类
{
public int _age;
public Person()
{
Console.WriteLine("执行父类的构造函数");
}
}
class Chinese : Person//Chines是子类
{
public Chinese()
{
Console.WriteLine("执行子类的构造函数");
}
}
- 有参构造函数的继承
class Person//父类
{
public int _age;
public Person(int age)
{
this._age = age;
}
}
class Chinese : Person//Chines是子类
{
public Chinese(int age):base( age)
{
}
}