一、类的实例化
Student zsStudent = new Student();
在等号前,Student为类名, zsStudent为实例名;Student zsStudent相当于定义了一个变量;
等号后,new才是实实在在为学生对象创建并分配内存空间;Student()是在调用构造方法。
经典示例:
Vector x,y;
x = new vector();
x.Value = 30;
y = x;
Console.WriteLine(y.Value);//会输出30
y.Value = 50;
Console.WriteLine(x.Value);//会输出50
其原因是x、y为引用类型,代码中只new(实例化)了一个对象,所以系统只给一个Vector对象分配了内存空间。x、y都指向该对象,所以修改y会影响x
二、构造方法
(一)构造方法用来创建对象,并且在构造函数中对对象进行初始化。
1.当我们实例化一个类时,系统会自动对这个类的属性进行初始化。
a)数字类型初始化为0(整数)/0.0(小数)
b)string类型初始化成:null
c)char类型初始化成:\0
2.使用构造方法的好处:
a)对多个属性进行赋值时,不需要重复的写实例名
b)可以保证用户在new一个对象的时候必须对某一个属性进行赋值
c)在创建对象时,对只读属性进行初始化
3.当我们定义好一个类之后,如果没有写构造方法,那么系统(即编译器)会自动给我们加上一个默认的无参数的构造方法。在这个构造方法中什么也不做,我们也看不到。
4.定义一个构造方法
a)构造方法是一个特殊的方法,它的名字和类的名字相同,没有返回值。连void都可以省略不写。我们一旦手写一个构造方法后,系统原先为默认给我们的那个无参的构造方法就不会为我们添加了。
b)当出现变量名相同的时候,采用就近原则,局部变量优先选择。(看变量指哪个的方法:右键,转到定义)
c)指示代词this:指当前类的、当前实例。this.name就是当前类的name字段。
5.要实例化一个类必须调用它的构造方法。一般情况下,构造方法为了初始化类的成员
(二)构造方法的重载
1.重载:在同一个类中,方法的名称相同,对应位置上的参数不同(类型不同或数量不同)
2.构造方法重载后,在类的实例化时可以输入不同版本的参数。
三、类图
(一)通用类图
1.分层
a)第一层表示类名
b)第二层表示字段和属性
“+”表示公有,“-”表示私有;冒号后面表示字段或属性的类型
c)第三次表示方法
冒号后面表示返回值的类型
二、C#类图
四、析构函数
如~Student(),也是与类名相同,但是前面加一个“~”,应用程序结束的时候肯定会调用析构函数。在C#中几乎不用,因为C#有垃圾回收机制,不需要写析构函数释放内存。
(一)定义
对象死亡之后最后使用的函数,对对象分配的内存进行清理
(二)特点
1.不能在结构中定义构造函数,只能对类使用析构函数
2.一个类只能有一个析构函数
3.无法继承和重载析构函数
4.析构函数既没有访问修饰符,也没有参数