黑马程序员-面向对象复习3(多态和接口)

来源:互联网 发布:手机画漫画的软件 编辑:程序博客网 时间:2024/06/05 20:10

------- 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培训、期待与您交流! -------

原创粉丝点击