面向对象三大特性: 封装
封装
封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。
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.保持统一的对外接口,内部修改不影响外部调用