大家好,欢迎大家一起来和我学习C#语言,本人是初学者,说的不好各位莫怪,嘿嘿!
要学好C#,理解面向对象的编程思想是很重要的,尤其要注重的基础。好了闲话就不多说了,下面就把
我在学习C#的过程中遇到的小困难在这里说说,算是自我总结吧,在希望得到高手指点的同时也希望能给
其他的初学者一点点帮助....
以下的把两者进行了对比,对初学者来说设计到的知识面可能稍微多了点(因为我也是初学者,所以
这么认为啦),在说明两者的区别之前,让我们先看一下以前的两个例子!
PS:如果初学者在这里比较觉得困难了,可以复制代码在VS里面运行一下!
示例一:
2 {
3 private int _salary;
4
5 public void ComputeSalary()
6 {
7 _salary = 1000;
8 }
9
10 public void ComputeSalary(int basic)
11 {
12 int hra;
13 Console.Write("\n输入住房津贴:");
14 hra = Int32.Parse(Console.ReadLine());
15 _salary = basic + hra;
16
17 }
18
19 public void ComputeSalary(int basic, bool manager)
20 {
21 int bonusAmt = 0;
22
23 if (manager)
24 {
25 Console.Write("\n输入奖金额:");
26 bonusAmt = Int32.Parse(Console.ReadLine());
27 }
28
29 _salary = basic + bonusAmt;
30
31 }
32
33 static void Main(string[] args)
34 {
35 int basic;
36 Employee objEmp1, objEmp2, objEmp3;
37
38 objEmp1 = new Employee();
39 objEmp1.ComputeSalary();
40 Console.WriteLine("第一位职员的基本工资 : " + objEmp1._salary);
41 objEmp2 = new Employee();
42 Console.Write("\n输入第二位职员的基本工资 :");
43 basic = Int32.Parse(Console.ReadLine());
44 objEmp2.ComputeSalary(basic);
45
46 objEmp3 = new Employee();
47 Console.Write("\n输入第三位职员的基本工资:");
48 basic = Int32.Parse(Console.ReadLine());
49 objEmp3.ComputeSalary(basic, true);
50
51 Console.WriteLine("\n第一位职员的纯工资收入 :" + objEmp1._salary);
52 Console.WriteLine("第二位职员的纯工资收入 :" + objEmp2._salary);
53 Console.WriteLine("第三位职员的纯工资收入 :" + objEmp3._salary);
54 }
55 }
56
57
示例二: (这个程序就是用构造函数代替了示例一中的一般方法,并重载了构造函数)
2 {
3 private int _salary;
4 public Employee()
5 {
6 _salary = 1000;
7 }
8
9 public Employee(int basic)
10 {
11 int hra;
12 Console.Write("\n输入住房津贴:");
13 hra = Int32.Parse(Console.ReadLine());
14 _salary = basic + hra;
15
16 }
17
18 public Employee(int basic, bool manager)
19 {
20 int bonusAmt = 0;
21
22 if (manager)
23 {
24 Console.Write("\n输入奖金额:");
25 bonusAmt = Int32.Parse(Console.ReadLine());
26 }
27
28 _salary = basic + bonusAmt;
29
30 }
31
32 static void Main(string[] args)
33 {
34 int basic;
35 Employee objEmp1, objEmp2, objEmp3;
36
37 objEmp1 = new Employee();
38 Console.WriteLine("第一位职员的基本工资 : " + objEmp1._salary);
39
40 Console.Write("\n输入第二位职员的基本工资 :");
41 basic = Int32.Parse(Console.ReadLine());
42 objEmp2=new Employee(basic);
43
44 Console.Write("\n输入第三位职员的基本工资:");
45 basic = Int32.Parse(Console.ReadLine());
46 objEmp3 = new Employee(basic, true);
47
48 Console.WriteLine("\n第一位职员的纯工资收入 :" + objEmp1._salary);
49 Console.WriteLine("第二位职员的纯工资收入 :" + objEmp2._salary);
50 Console.WriteLine("第三位职员的纯工资收入 :" + objEmp3._salary);
51 }
52 }
53
看完以上的两个例子,可以知道以下两点:
一:声明方式不同
a. 一般函数声明:[访问修饰符] 返回类型 方法名(参数列表)
{ 函数主体 }
b.构造函数声明:[访问修饰符] 类名(参数列表)
{ 构造函数主体 }
二:运行方式不一样
a.一般函数在类进行实例化时,还必须手动调用
b.构造函数在类进行实例化时就已经调用
拓展:构造函数是一种特殊的方法,通常是用来完成类成员变量的初始化操作,但也可以根据需要进行
其他操作。构造函数名和类名相同没有返回值。类的构造函数还支持重载,不同重载版本提供不
同的初始化方法。默认情况下,每个类都包含一个不带函数的默认构造函数,在里面讲所有的字
段清零。如果没有为该类明确定义 构造函数,则使用默认构造函数。