三、类的属性--封装字段
包含两个方法:
1、读访问器:get(取值)
2、写访问器:set(赋值)
///==封装==
1 private string _Nihao;//原有的普通变量private私有的,通过右键--重构--封装字段实现; 2 { 3 get{return _Name;}//默认一直存在get和set两个方法,但是一直隐藏信息的特性; 4 set{_Name = value;} 5 }
//封装字段
public string Name//封装之后的属性,public公共的, //相当于_Name的传话的中间人,封装之后将原有隐藏的变量属性显示出来,两种方法:get,set。 { get //读访问器,获取,返回_Name的值,取值的过程 { return _Nihao;//return的是自身的值 } set //写访问器,设置name的值赋值给_Name,赋值的过程 { int sum = 0; for (int i = 1; i <= 10; i++) { sum = sum + i; } value = sum.ToString(); _Nihao = value; }
在主函数中调用:
///==封装==
1 fengzhuang p = new fengzhuang();//必须要初始化new才能调用 2 Console.WriteLine("输入:"); 3 p.Name = Console.ReadLine(); 4 Console.WriteLine(p.Name); 5 Console.ReadLine();
这样就可以返回值了。
四、类的构造函数
定义:当使用new关键字创建一个对象时,一个特殊的函数被自动调用,这就是类的构造函数。
在C#中,类的构造函数与类名相同,没有返回值。
class student
{
public student()//构造函数的名称同类名,当在主函数调用时,只要初始化new,构造函数就可以被自动调用。
{
方法;
}
}
【习题】
///学生课程,循环输入学生信息,输出平均分,最高分,最低分,排序;(利用面向对象)
1 Console.Write("请输入学生人数:"); 2 int n = int.Parse(Console.ReadLine()); 3 Console.WriteLine("请输入学生学号,姓名,分数"); 4 ArrayList arr = new ArrayList(); //定义一个集合, 5 for (int i = 0; i < n; i++) 6 { 7 student s = new student();//for循环中每循环一次,必须重新初始化,不然会把之前的赋值替换掉,滞留最后一次赋值 8 Console.Write("学号:"); 9 s.Code = int.Parse(Console.ReadLine()); 10 Console.Write("姓名:"); 11 s.Name = Console.ReadLine(); 12 Console.Write("分数:"); 13 s.Score = decimal.Parse(Console.ReadLine()); 14 arr.Add(s);//把类的属性全都放在集合中 15 } 16 //for循环求总分; 17 decimal sum = 0; 18 for (int i = 0; i < n; i++) 19 { 20 student avgs = (student)arr[i];//这一步是将集合arr强制转换为student类。 21 sum += avgs.Score;//求总分 22 } 23 24 //for嵌套循环冒泡排序,求最高分,最低分 25 for (int i = 0; i < n; i++) 26 { 27 for (int j = i; j < n; j++) 28 { 29 student s1 = (student)arr[i];//把集合按索引强制转化为student类,并把集合中的数值赋值给s1; 30 student s2 = (student)arr[j]; 31 if (s1.Score < s2.Score)//根据分数判断大小,按照先大后小的顺序排列 32 { 33 student zhong = new student(); //冒泡排序(重点) 34 zhong = s1; 35 arr[i] = s2;//表示把较大值,赋值给i索引 36 arr[j] = zhong; 37 } 38 } 39 } 40 41 //打印输出 42 Console.WriteLine("总分:{0}", sum); 43 Console.WriteLine("平均分:{0}", sum / n); 44 student ss1 = (student)arr[0]; 45 Console.WriteLine("姓名:{0}最高分:{1}",ss1.Name,ss1.Score); 46 int m=n-1; 47 student ss2 = (student)arr[m]; 48 Console.WriteLine("姓名:{0}最低分:{1}", ss2.Name, ss2.Score); 49 //按成绩排序,for循环 50 Console.WriteLine("本班的成绩列表如下:*****************************"); 51 for (int i = 0; i < n; i++) 52 { 53 student avgs = (student)arr[i]; 54 Console.WriteLine("名次 学号 姓名 分数"); 55 Console.WriteLine("{0} {1} {2} {3} ",i+1,avgs.Code,avgs.Name,avgs.Score); 56 } 57 Console.ReadLine();