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

  • 相关阅读:
    新浪微博采用Oauth发送图片和文字
    android proguard也有弱点
    POJ 2376
    POJ 3259
    POJ 2253
    POJ 1062
    POJ 2299
    POJ 2186
    POJ 1860
    POJ 2823
  • 原文地址:https://www.cnblogs.com/xiaoqingshe/p/4157339.html
Copyright © 2011-2022 走看看