------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
多态即父类通过调用同名方法来呈现子类特性的性质,我们还是来看一个例子:
class 动物{
public virtual void 叫(){
//此处为空
}
}
class 猫:动物{
public override void 叫(){
console.writeline("猫是喵喵叫,喵喵~");
}
}
class 鸭子:动物{
public override void 叫(){
console.writeline("鸭子是嘎嘎叫,嘎嘎~");
}
}
动物:动物1=new 猫();
动物1.叫();
动物:动物2=new 鸭子();
动物2.叫();
输出结果一个是猫叫,一个是鸭子叫,我们执行的是父类的方法,却根据不同的子类产生了不同的结果,这就叫做多态,关键点在于用子类去实例化父类的引用。再比如说一个事件,比如上课铃响起来了,不同的人会有不同的反应,老师会站在讲台上开始上课,学生会坐着听课,这就是多态在现实生活中的反应
多态是面向对象编程的核心概念,它使得程序员把关注点放在不同对象的关系上,而不关注父类和子类方法的具体区别,可以使得程序更加规范和简洁。
下面复习接口和接口多态:
接口就是一个类必须要完成的方法,它标示了这个类能做什么,接口中不能定义字段,而只有方法,接口 中的方法只有声明,类一旦继承了一个接口,就必须完全的实现这个接口中的所有方法:
interface 猫能做的事{
void 爬树();
void 抓老鼠();
void 舔毛();
}
class 猫:动物,猫能做的事{
void 爬树(){
...
};
void 抓老鼠(){
...
};
void 舔毛(){
...
};
public override void 叫(){
console.writeline("猫是喵喵叫,喵喵~");
}
}
猫实现了"猫能做什么"这个接口中所有的方法,它的子类例如“波斯猫”也将继承这些方法,接口中所有的方法都强制为公共,访问修饰符对其无效接口的意义:
接口为类提供了一套统一规范的方法,如在最高层的父类中继承这些接口,那么其下的任何一个子类都继承这些接口,这就如同学校的校规一样,所有老师和学生都必须遵守,都要按照校规中所规定的来做事,下面我们把接口和多态结合起来看一下:
interface 猫能做的事{
void 爬树();
void 抓老鼠();
void 舔毛();
}
class 猫:动物,猫能做的事{
void 爬树(){
...
};
void 抓老鼠(){
...
};
void 舔毛(){
...
};
public override void 叫(){
console.writeline("猫是喵喵叫,喵喵~");
}
}
猫能做的事 p1=new 猫();接口相当于其继承的子类的父类,如果我们用子类来实例化一个接口,那么会有这样的效果:子类中除了接口中声明的方法,其他在子类中额外添加的方法都无法访问
这就叫做接口的多态,通过这种方法,可以为所有相似的类制定一套统一的方法规范,再操作时按照统一的规范进行操作
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------