Windows移动开发(三)——闭关修炼
时间:2014-05-22 22:53:34
收藏:0
阅读:541
上一次,我们了解了委托,委托和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 多态
多态按字面的意思就是“多种状态”。在面向对象编程中,接口的多种不同的实现方式即为多态。其实多态更像是一种思想,不同实体实现同一接口是多态,重载函数方法是多态,方法重写是多态等等,多态就是对同一功能有不同的实现方式,关于多态理解其中的思想是最为重要的,在面向对象编程中灵活运用多态那也是非常非常爽的一件事。
继承多态总结:今天介绍的东西似乎有点多,其实不多,这些都是进行面向对象开发必须掌握的东西,如果你对上面说的内容感觉很陌生,那么你目前是不适合做移动开发的,你最应该的马上补充一下这是知识空白,当然面向对象的编程基础远不止这些,所以要想成为一流的开发人员,修炼是必不可缺的了。
好了,不在得瑟了,今天就到这里,下次还有更爽的,敬请期待。我们下次见。
评论(0)