12-11面向对象--封装、构造函数

三、类的属性--封装字段

包含两个方法:

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();

原文地址:https://www.cnblogs.com/xiaoqingshe/p/4157339.html