• 1211面向对象--封装、构造函数


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

    包含两个方法:

    1、读访问器:get(取值)

    2、写访问器:set(赋值)

    ///==封装==
    private string _Nihao;//原有的普通变量private私有的,通过右键--重构--封装字段实现;
      /*{
    get{return _Name;}//默认一直存在get和set两个方法,但是一直隐藏信息的特性;
    set{_Name = value;}
      }*/
    //封装字段
      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;

    }

    在主函数中调用:

    ///==封装==
    fengzhuang p = new fengzhuang();//必须要初始化new才能调用
    Console.WriteLine("输入:");
    p.Name = Console.ReadLine();
    Console.WriteLine(p.Name);
    Console.ReadLine();

    这样就可以返回值了。

    四、类的构造函数

    定义:当使用new关键字创建一个对象时,一个特殊的函数被自动调用,这就是类的构造函数。

    在C#中,类的构造函数与类名相同,没有返回值。

    class  student

    {

     public student()//构造函数的名称同类名,当在主函数调用时,只要初始化new,构造函数就可以被自动调用。

      {

         方法;

       }

    }

    【习题】

    ///学生课程,循环输入学生信息,输出平均分,最高分,最低分,排序;(利用面向对象)
    Console.Write("请输入学生人数:");
    int n = int.Parse(Console.ReadLine());
    Console.WriteLine("请输入学生学号,姓名,分数");
    ArrayList arr = new ArrayList(); //定义一个集合, 
    for (int i = 0; i < n; i++)
    {
    student s = new student();//for循环中每循环一次,必须重新初始化,不然会把之前的赋值替换掉,滞留最后一次赋值
    Console.Write("学号:");
    s.Code = int.Parse(Console.ReadLine());
    Console.Write("姓名:");
    s.Name = Console.ReadLine();
    Console.Write("分数:");
    s.Score = decimal.Parse(Console.ReadLine());
    arr.Add(s);//把类的属性全都放在集合中 
    }
    //for循环求总分;
    decimal sum = 0; 
    for (int i = 0; i < n; i++)
    {
    student avgs = (student)arr[i];//这一步是将集合arr强制转换为student类。
    sum += avgs.Score;//求总分
    }

    //for嵌套循环冒泡排序,求最高分,最低分
    for (int i = 0; i < n; i++)
    {
    for (int j = i; j < n; j++)
    {
    student s1 = (student)arr[i];//把集合按索引强制转化为student类,并把集合中的数值赋值给s1;
    student s2 = (student)arr[j];
    if (s1.Score < s2.Score)//根据分数判断大小,按照先大后小的顺序排列
    {
    student zhong = new student();  //冒泡排序(重点)
    zhong = s1;
    arr[i] = s2;//表示把较大值,赋值给i索引
    arr[j] = zhong;
    }
    }
    }

    //打印输出
    Console.WriteLine("总分:{0}", sum);
    Console.WriteLine("平均分:{0}", sum / n); 
    student ss1 = (student)arr[0];
    Console.WriteLine("姓名:{0}最高分:{1}",ss1.Name,ss1.Score);
    int m=n-1;
    student ss2 = (student)arr[m];
    Console.WriteLine("姓名:{0}最低分:{1}", ss2.Name, ss2.Score);
    //按成绩排序,for循环
    Console.WriteLine("本班的成绩列表如下:*****************************");
    for (int i = 0; i < n; i++)
    {
    student avgs = (student)arr[i];
    Console.WriteLine("名次 学号 姓名 分数");
    Console.WriteLine("{0} {1} {2} {3} ",i+1,avgs.Code,avgs.Name,avgs.Score);
    }
    Console.ReadLine();

  • 相关阅读:
    找“水王”
    用户体验评价
    学习进度12
    个人冲刺10
    学习进度13
    学习进度11
    个人冲刺9
    myeclipse中js报错
    安卓调用三个系统app(打电话,发短息,打开网页)
    关系图绘制详解
  • 原文地址:https://www.cnblogs.com/huaze/p/4162251.html
Copyright © 2020-2023  润新知