zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/huaze/p/4162251.html
Copyright © 2011-2022 走看看