C#学习笔记—定义封装的类类型
1、类是有字段数据(成员变量)以及操作这个数据的成员(如构造函数、属性、方法、事件)所构成的自定义类型。
2、对象必须使用new关键字来分配到内存中。
View Code
1 class Car
2 {
3 //Car的状态
4 public string petName;
5 public int currSpeed;
6
7 //Car的功能
8 public void PrintState()
9 {
10 Console.WriteLine("{0} is going {1} MPH.", petName, currSpeed);
11 }
12
13 public void SpeedUp(int delta)
14 {
15 currSpeed += delta;
16 }
17
18 static void Main(string[] args)
19 {
20 Car myCar = new Car();
21 myCar.petName = "Henry";
22 myCar.currSpeed = 10;
23
24 //将Car加速几次,然后输出新的状态
25 for (int i = 0; i <= 10; i++)
26 {
27 myCar.SpeedUp(5);
28 myCar.PrintState();
29 }
30 Console.ReadLine();
31 }
3、C#支持构造函数,它允许在创建对象时创建其状态,和普通方法不同,构造函数永远不会有返回值,并且它的名字总是和需要构造的类的名字相同。
4、让构造函数彼此不同的是构造函数参数的个数和类型。
5、所有类都有免费的默认构造函数,然而,一旦定义了自定义构造函数,默认构造函数就被自动从类中移除,并且不再有效,如果对象用户使用默认构造函数和自定义构造函数创建类型实例,就必须显式重新定义默认构造函数。
View Code
1 class Motorcycle
2 {
3 public int driverIntensity;
4
5 public void PopWheely()
6 {
7 for (int i = 0; i < driverIntensity; i++)
8 {
9 Console.WriteLine("Yeeeeeee Haaaaaaaaaaaaawww!");
10 }
11 }
12 //恢复默认构造函数,将所有数据成员设为默认值
13 public Motorcycle() { }
14
15 //自定义构造函数
16 public Motorcycle(int intensity)
17 {
18 driverIntensity = intensity;
19 }
20 }
6、C#支持this关键字来提供对当前类实例的访问,this关键字可能的用途就是,解决当传入参数的名字和类型数据字段的名字相同时产生的作用域歧义。
7、在静态成员的实现中使用this关键字会产生编译器错误。因为静态成员在类(而不是对象)级别产生作用,因此在类级别没有当前对象!
8、使用this进行串联构造函数调用
View Code
1 class Motorcycle
2 {
3 public int driverIntensity;
4 public string driverName;
5
6 public void PopWheely()
7 {
8 for (int i = 0; i < driverIntensity; i++)
9 {
10 Console.WriteLine("Yeeeeeee Haaaaaaaaaaaaawww!");
11 }
12 }
13
14 //这是做所有工作的主构造函数
15 public Motorcycle(int intensity, string name)
16 {
17 if (intensity > 10)
18 {
19 intensity = 10;
20 }
21 driverIntensity = intensity;
22 driverName = name;
23 }
24
25 //构造函数链
26 public Motorcycle() { }
27 public Motorcycle(int intensity) : this(intensity, "") { }
28 public Motorcycle(string name) : this(0, name) { }
29
30 }
9、使用可选参数代替传统的构造函数链