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 多态

多态按字面的意思就是“多种状态”。在面向对象编程中,接口的多种不同的实现方式即为多态。其实多态更像是一种思想,不同实体实现同一接口是多态,重载函数方法是多态,方法重写是多态等等,多态就是对同一功能有不同的实现方式,关于多态理解其中的思想是最为重要的,在面向对象编程中灵活运用多态那也是非常非常爽的一件事。

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

好了,不在得瑟了,今天就到这里,下次还有更爽的,敬请期待。我们下次见。

时间: 2024-09-15 19:51:17

Windows移动开发(三)——闭关修炼的相关文章

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

一些武侠小说里的大人物,为了争夺武林盟主,号召天下,经常闭关修炼一段时间,闭关期间只能接触送饭的人,并且关外还有很多守卫的人员.还有,无论是篮球还是足球运动员,他们在真正接触球之前,都必须做很长一段时间的身体素质锻炼,像长跑之类. 如果我们想成为程序界的武林至尊,那么我们也必须得闭关修炼,仔细修炼基本功. 那么我们做Windows移动开发的程序员们的基本功是什么呢?其实,基本功有很多,最重要的是逻辑思维和解决问题的能力,话又说回来,逻辑思维和解决问题的能力从何而来呢?不断的做.练,熟能生巧在程序

Masm for Windows集成开发环境编写汇编程序

由于最近在学习汇编,用的软件是一款叫"Masm for Windows集成开发环境",但是发现该软件的资料比较少,对于我们这样刚刚学习汇编的同学,我查找了很多资料,下面主要是介绍该工具及2个汇编的基本程序. 一.软件的使用 下面是阅读完四川大学的课件后几张介绍该软件运行的基本方法: 1.进入Masm forWindows集成实验环境 2.编写程序,该代码是该软件自带的简单入门实例11个中的第一个,后面将详细介绍该代码 3.保存汇编程序.编写完程序必须要保存后才能运行 4.运行程序 5.

Windows Phone 7开发教程(1)——Windows Phone开发工具初体验

这是为<程序员>4月期写的文章,是在<双重惊喜-- Windows Phone Developer Tools初体验>的基础上增加了一些内容, 包括WebBrowser空间.MediaPlayer空间,还有一个非常简单的XNA程序.希望对 Windows Phone开发有兴趣的朋友有一些帮助. Windows Phone开发工具在MIX 2010上火热登场了.Windows Mobile开发者们 压抑许久的热情终于爆发出来,对于Windows Phone的华丽转身,开发者们褒贬 不

Windows 8开发入门(六)Windows 8中的Popup使用方式

在上一篇文章中我们将了替代Silverlight中MessageBox的MessageDialog控件,本篇文章将讲诉另外一种弹 出提示窗口的控件Popup. 一.我们认识Popup控件的IsLightDismissEnabled属性,这个属性设置为 true的时候,点击非Popup控件外任何区域将关闭Popup. <Button Content="弹出窗口一" Name="btn1" Width="108" Margin="16

Windows 8开发入门(二).Windows 8开发知识储备

在本文中将整理出一些Windows 8开发前需要了解的一些基础知识并且列为相应的几个表格以供大家参考, 其中部分来源于MSDN.部分来源于本人整理,如有误之处请指正,谢谢. 一.新建常用XAML项目类型 模板和各种语言的关系 项目类型名 项目类型 作用以及描述 适用语言 空白应用程序 创建一个最简化的空白XAML应用 以供用户使用,需要自己添加 界面.公共代码等. C#/VB/C++/Javascript   拆分应用布局程序 显示主从式列表,如新闻列 表 (分为很多个新闻类别,每个新闻类别 下

Windows Phone开发(10):常用控件(上)

原文:Windows Phone开发(10):常用控件(上) Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如果不是过于复杂的界面布局,使用默认控件就足矣.相比之下,Android SDK中尽管提供了许多可视化控件,但你会发现,实际开发用到的并不多,而且很多控件完全只是摆设,既没有公开相应的操作方法也没有更多可用于开发者自行处理的监听器(这里我习惯翻译为监听器,在安卓里面没有像C#那样使用事件,而是new一

Windows Phone开发(15):资源

原文:Windows Phone开发(15):资源 活字印刷术是我国"四大发明"之一,毕昇在发明活字印刷术之后,他很快发现一个问题,随着要印刷资料的不断增加,要用到的汉字数目越来越多,于是,他必须寻找一种有效的办法去管理那些刻有汉字的立方体(暂且就叫立方体,其实的确是个立方体),所以,他就和助手们一起努力,为这些立方体进行记录,有标识地放好,在印刷过程中用到哪些字,就直接取出来,不用了就放回去,既环保又方便. 这就是资源,水.空气.阳光也是资源,煤.铁矿物也是资源,只不过有些可再生,有

Windows Phone开发(45):推送通知大结局——Raw通知

原文:Windows Phone开发(45):推送通知大结局--Raw通知 为什么叫大结局呢?因为推送通知服务就只有三种,前面扯了两种,就剩下一种--Raw通知. 前面我们通过两节的动手实验,相信大家都知道了,推送通知其实并不复杂,为什么呢?你看到了的,不管是哪种方式,使用方法基本一样,如果你不愿意写代码的话,完全可以把代码Copy几下就完事了,三种推送通知的实现代码是一样的,而仅仅是发送的内容不同罢了. Raw推送通知比起前面两种更简单,因为它没有规范的格式,只要你向指定URI POST一个字

Windows Phone开发(40):漫谈关键帧动画之中篇

原文:Windows Phone开发(40):漫谈关键帧动画之中篇 一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一下<新华字典>,"离"和"散"的意思相近.我们可以这样解释:每个关键帧之间是直接过渡,其间不经过动画插补.似乎这样理解有点苦涩难懂,所以,我们还是从实例入手. 请参考以下XAML代码写一个示例: <Grid Loaded="OnGridLoa