zoukankan      html  css  js  c++  java
  • 面向对象三大特性: 封装

    封装

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

    e.g. 我们可以使用遥控器。 遥控器有多个功能

    封装的优点

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

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

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

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

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

    /// <summary>
    /// 狗狗类
    /// </summary>
    class Dog
    {
        string _dogName;
        readonly Color _dogColor=Color.Yellow;
        readonly double _dogPrice = 800.00;
        int _shoutNumber;
    
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="dogName"></param>
        public Dog(string dogName)
        {
            DogName = dogName;
        }
    
        /// <summary>
        /// 狗狗名字 公有属性
        /// </summary>
        public string DogName
        {
            get { return _dogName; }
            set { _dogName = value; }
        }
        /// <summary>
        /// 狗狗颜色 只读属性 (颜色一出生就是这个颜色,这里只提供只读,当然这里不考虑染色)
        /// </summary>
        public  Color DogColor
        {        
            get { return _dogColor;}            
        }
        /// <summary>
        /// 狗狗价格 只读属性 (这是买来的价格,历史是不可以修改的)
        /// </summary>
        public  double DogPrice
        {
            get { return _dogPrice; }
        }
    
        /// <summary>
        /// 狗叫的次数 (不同的陌生人来,叫的次数不同)
        /// </summary>
        public int  ShoutNumber{
            set{_shoutNumber=value;}
            get { return _shoutNumber; }
        }
    
        /// <summary>
        /// 狗叫的方法
        /// </summary>
        public void  Shout()
        {
            int i=0;
            string ShoutNum="";
            do
            {
                ShoutNum += "旺!";
                i++;
            } while (i <= ShoutNumber);
            MessageBox.Show(ShoutNum);
        }        
    }

    封装要点

    1.封装就是把一个object的所有properties和methods放在一起

    2.保持统一的对外接口,内部修改不影响外部调用

  • 相关阅读:
    Apache2支持py,pl,cgi,sh
    javascript利用Active操作本地文件
    桥接模式下的手机-电脑-开发板连接
    Django signal
    mysql改变表的编码字符集(utf8改为utf8mb4)
    Mysql 多表关联查询
    Python unicode转义字符u的处理
    How to filter a DateTimeField by date in Django?
    python闭包变量迟邦定
    Ubuntu16.04安装&创建Python虚拟环境
  • 原文地址:https://www.cnblogs.com/TheMiao/p/9255932.html
Copyright © 2011-2022 走看看