首页 > 代码库 > Windows移动开发(三)——闭关修炼

Windows移动开发(三)——闭关修炼

上一次,我们了解了委托,委托和Lambda表达式结合是一件灰常灰常爽的事情,这也是只有.Net才有,自己偷着笑去吧。几天这次,我要介绍一下继承和多态,这是进行面向对象编程必须熟练掌握的技术和思想。
1.1 类
继承,儿子继承父亲的遗产,这是生活中的体现,在面向对象的编程中,父亲和儿子都是对象的抽象集合,也就是类。什么是类呢?就是一些具有共同特征的对象集合,例如:狗都有四条腿,一条尾巴,两只眼睛,狗都会游泳,都爱吃骨头,所以我们把具有以上特征的动物抽象成狗,我们进行面向对象编程也是这样,面向对象的程序员必须具备抽象的能力。
1.1.1 字段
字段在类中属于封装的部分,一般是私有成员变量或常量,如:
private int _num1;
private bool _dispose;
_num1与 _dispose都是所属类的字段。
1.1.2 属性
属性是类的静态特征,如狗的腿有几条,眼睛有几只,都是狗的属性,在面向对象的编程中,属性是对字段封装,如:
private int _num1; 
public int Num1 
 { 
get { return _num1; } 
set { _num1 = value; } 
  private bool _dispose; 
public bool Dispose
 { 
 get { return _dispose; }
 set { _dispose = value; }
}
Num1和Dispose都是所属类的属性,他们对各自的字段进行了封装,有的属性是只读的,还有的属性只能在构造函数中进行赋值,以后不可以修改,如下:
    private int _dogColor; 
    /// <summary> 
    /// 只读属性:狗的颜色 
    /// </summary> 
    public int DogColor 
    { 
 get { return _dogColor; } 
   } 
 private string _pid;
 /// <summary> 
 /// 只能在构造函数中赋值属性:身份证号 
 /// </summary> 
 public string PID
 { 
 get { return this._pid; }
 private set { this._pid = value; } 
 }
1.1.3 方法
方法是类的行为能力,例如狗游泳,吃骨头,这都是狗的行为能力,在面向对象编程中,方法的结构是这样的:
/// <summary> 
 /// 狗默默的吃方法,默默的所以是私有的 
 /// </summary>
private void Eat() 
 {
 Console.WriteLine("真好吃啊!"); 
 }
/// <summary> 
/// 狗游泳,判断狗是否游过了river河 
 /// </summary> 
 /// <param name="dogName">狗的名字</param> 
 /// <param name="river">河的名字</param> 
 /// <returns></returns>
 public bool Swim(string dogName,string river)
 {
 bool isSwim = false;
 if (!string.IsNullOrEmpty(river))
 {
 Console.WriteLine(dogName + "游过了" + river); 
 isSwim = true; 
 } 
 return isSwim; 
 }
Eat和Swim都是狗类的方法,Eat方法没有参数没有返回值,Eat方法是私有的,只有狗类内部可以访问Eat方法;Swim方法有两个string类型参数,第一个参数是狗的名字,第二个参数是狗要游过的河流,返回bool类型判断狗是否游过了该河流,Swim方法是公有的,所有狗对象都可以访问Swim方法,关于private、protected、public的访问权限可以仔细阅读微软官方的MSDN帮助文档进行深入研究,不难理解,在这里我就不过多介绍了,到此关于类的介绍就这些了,下面继续介绍面向对象的核心知识之一——继承。
1.2 继承
1.2.1 继承的原理
继承是建立在类的基础上,具体类实现接口也可以叫做继承,在C#中一个类只能继承一个类,即不支持多重继承,生活中也是这样,一个人只能有一对亲生父母;但是C#中一个类可以实现多个接口,实现接口可以理解为,我们学习了新的本领,如,我们学会了说话,我们就实现了说话的接口,我们学会了写代码,我们就实现了写代码的接口。
可以看出,我们进行面向对象编程,就是模拟生活制作生活,所以一个好的程序员必定是一个美好生活的缔造者,广大女同胞们要注意了,选老公一定要选程序员,选择了程序员,你的后半生就幸福了,哈哈哈。
C#中的继承是这样的:
/// <summary> 
 /// 产品类 
 /// </summary> 
 public class Product 
 { 
 private string _name; 
 public string Name 
 { 
 get { return _name; } 
 set { _name = value; }
 private int _age; 
 public int Age 
 { 
 get { return _age; } 
 set { _age = value; } 
 } 
 } 
 /// <summary> 
 /// 发出声音接口 
 /// </summary> 
 public interface Sound 
 { 
 bool MakeNoise(); 
 } 
  /// <summary> 
 /// 显示图片接口 
 /// </summary> 
 public interface ShowImage 
 { 
 void Show(string path); 
 } 
 public class NewProduct : Product, Sound, ShowImage 
 {
 #region NewProduct类新成员 
 private string _color; 
 public string Color 
 { 
  get { return _color; } 
set { _color = value; } 
 } 
private void ChangeColor() 
 { 
 Console.WriteLine("颜色真的变了耶!"); 
 } 
 #endregion 
 #region Sound 成员 
 public bool MakeNoise() 
 { 
 Console.WriteLine("哇塞,声音好大啊!"); 
 return true; 
 } 
 #endregion 
 #region ShowImage 成员 
public void Show(string path)
 { 
 Console.WriteLine("哎呦,来自{0}图片太漂亮了!",path); 
 } 
 #endregion
 }
从上面代码可以看出,接口没有方法的具体实现,接口方法的具体实现代码在继承该接口的类中实现,但要保持签名一致。
在面向对象的编程中,子类具有父类的所有特征,可以理解为子类是父类的扩展,父类里的所有非私有属性和非私有方法子类都可以访问。
1.2.1 继承的使用
实现接口也属于继承,那么什么时候继承类,什么时候继承接口呢?从程序的可扩展型和复用性考虑,为了松耦合度,只有有明确的父子关系的两个类才使用继承类,而实现接口在程序设计模式中经常用到,易于扩展。
比如,策略模式,对算法进行封装,经常用接口定义方法,然后具体类中具体实现,调用时由Context统一调用,在程序设计中使用适当的设计模式又是一件非常非常爽的事情,关于设计模式,我在这里也不多介绍,如果想深入了解,可以观看吕建中的官方视频,也可以看《大话设计模式》这本书,看完之后,你会感觉更爽。
1.3 多态
多态按字面的意思就是“多种状态”。在面向对象编程中,接口的多种不同的实现方式即为多态。其实多态更像是一种思想,不同实体实现同一接口是多态,重载函数方法是多态,方法重写是多态等等,多态就是对同一功能有不同的实现方式,关于多态理解其中的思想是最为重要的,在面向对象编程中灵活运用多态那也是非常非常爽的一件事。

继承多态总结:今天介绍的东西似乎有点多,其实不多,这些都是进行面向对象开发必须掌握的东西,如果你对上面说的内容感觉很陌生,那么你目前是不适合做移动开发的,你最应该的马上补充一下这是知识空白,当然面向对象的编程基础远不止这些,所以要想成为一流的开发人员,修炼是必不可缺的了。
好了,不在得瑟了,今天就到这里,下次还有更爽的,敬请期待。我们下次见。