• C#面向对象三大特性之一:封装


    面向对象的三大特性:封装、继承、多态。

    1.封装概念

    封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。

    2.封装的优点

    A.良好的封装能够减少耦合(比如实现界面和逻辑分离)

    B.可以让类对外接口不变,内部可以实现自由的修改

    C.类具有清晰的对外接口,使用者只需调用,无需关心内部

    D.因为封装的类功能相对独立,因此能更好的实现代码复用

    E.可保护代码不被无意中破坏,通过私有字段等实现内部。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。

    封装实例:我们单位养了一只价值800块钱,黄色的的牧羊犬,有陌生人来的时候,就会叫几声,当然越是陌生程度越高,叫的次数越多。对这样一个事务的处理上,可以利用面向对象的封装特性,代码实现如下:

    复制代码
     1 /// <summary>
     2 /// 狗狗类
     3 /// </summary>
     4 class Dog
     5 {
     6     string _dogName;
     7     readonly Color _dogColor=Color.Yellow;
     8     readonly double _dogPrice = 800.00;
     9     int _shoutNumber;
    10 
    11     /// <summary>
    12     /// 构造函数
    13     /// </summary>
    14     /// <param name="dogName"></param>
    15     public Dog(string dogName)
    16     {
    17         DogName = dogName;
    18     }
    19 
    20     /// <summary>
    21     /// 狗狗名字 公有属性
    22     /// </summary>
    23     public string DogName
    24     {
    25         get { return _dogName; }
    26         set { _dogName = value; }
    27     }
    28     /// <summary>
    29     /// 狗狗颜色 只读属性 (颜色一出生就是这个颜色,这里只提供只读,当然这里不考虑染色)
    30     /// </summary>
    31     public  Color DogColor
    32     {        
    33         get { return _dogColor;}            
    34     }
    35     /// <summary>
    36     /// 狗狗价格 只读属性 (这是买来的价格,历史是不可以修改的)
    37     /// </summary>
    38     public  double DogPrice
    39     {
    40         get { return _dogPrice; }
    41     }
    42 
    43     /// <summary>
    44     /// 狗叫的次数 (不同的陌生人来,叫的次数不同)
    45     /// </summary>
    46     public int  ShoutNumber{
    47         set{_shoutNumber=value;}
    48         get { return _shoutNumber; }
    49     }
    50 
    51     /// <summary>
    52     /// 狗叫的方法
    53     /// </summary>
    54     public void  Shout()
    55     {
    56         int i=0;
    57         string ShoutNum="";
    58         do
    59         {
    60             ShoutNum += "旺!";
    61             i++;
    62         } while (i <= ShoutNumber);
    63         MessageBox.Show(ShoutNum);
    64     }        
    65 }
    复制代码

    上面的Dog类就是对狗狗的全部信息,包括它的价格,颜色,叫声,名字等封装成一个类,以方便外部调用。对狗狗的价格和颜色使用了只读属性,因为它买来的历史价格和颜色是不可以更改的(染毛暂不考虑)。通过封装的思想我们可以增加狗狗体重等其它公有属性,而不会影响到外部接口的调用,对私有的只读属性做到了保护。

         相信通过这两个实例,已经完全对封装熟悉了。假如我们的狗狗又生了一个宝宝,他的很多特征都基本相同,我们是不是又要复制一次这个类呢?这就要用到面向对象的另一个重要特性——继承,下面会慢慢介绍。

    归纳一下封装的要点

    要点:

    1.封装,就是把一个对象所能操作的所有信息放在一起

    2.封装能减少耦合,保持统一的对外接口,内部修改不影响外部调用

  • 相关阅读:
    Eclipse使用
    java基础
    js冒泡排序与二分法查找
    js数组
    html练习
    html5表单
    html5标签
    问题总结
    学习目标
    项目总结
  • 原文地址:https://www.cnblogs.com/qinyi173/p/4685319.html
Copyright © 2020-2023  润新知