Head First C# 中文版 图文皆译 第七章 接口和抽象类 page254
2009-03-18 13:33
671 查看
接口要求类必须实现某些方法、属性
一个类只可以继承自一个类。所以如果需要一种蜜蜂即会做StingPatrol的工作又会做NectarCollector的工作的时候,给这两个类分别创建一个子类是不行的。
蜂后的DefendTheHive()(保护蜂巢)方法只可以让StingPatrol对象去保护蜂巢。蜂后希望训练别的蜜蜂让它们也会用毒刺蜇人,但是蜂后无法命令别的蜜蜂去保护蜂窝:
NectarCollector对象懂得如何采集花粉,StingPatrol对象懂得如何防护蜂巢。即使蜂后可以通过给NectarCollector添加SharpenStinger()和LookForEnemies()方法来让花粉采集者学会防护蜂巢,但是蜂后还是无法把NectarCollector作为参数传入DefendTheHive()方法。或许蜂后可以用两个各版本的方法:
但是这个解决方法并不好。这两个方法几乎是一样的,它们都要都要被传入的参数的相同的方法。这两个方法唯一区别就是参数类型不同。你早就知道维护两个相同的方法是多么麻烦了。幸运的是,C#提供了接口来处理这种情况。接口定义其实现类必须实现的方法。接口要求实现它的类必须包含它定义的方法,否则,编译器将会报错。实现类可以直接编码这些方法,或者从父类继承来也可以,接口并不关心这一点。只要编译的时候可以找到这些方法就可以了。
接口要求其实现类实现接口中定义的所有方法和属性,否则,编译器将会报错。
一个类只可以继承自一个类。所以如果需要一种蜜蜂即会做StingPatrol的工作又会做NectarCollector的工作的时候,给这两个类分别创建一个子类是不行的。
蜂后的DefendTheHive()(保护蜂巢)方法只可以让StingPatrol对象去保护蜂巢。蜂后希望训练别的蜜蜂让它们也会用毒刺蜇人,但是蜂后无法命令别的蜜蜂去保护蜂窝:
NectarCollector对象懂得如何采集花粉,StingPatrol对象懂得如何防护蜂巢。即使蜂后可以通过给NectarCollector添加SharpenStinger()和LookForEnemies()方法来让花粉采集者学会防护蜂巢,但是蜂后还是无法把NectarCollector作为参数传入DefendTheHive()方法。或许蜂后可以用两个各版本的方法:
但是这个解决方法并不好。这两个方法几乎是一样的,它们都要都要被传入的参数的相同的方法。这两个方法唯一区别就是参数类型不同。你早就知道维护两个相同的方法是多么麻烦了。幸运的是,C#提供了接口来处理这种情况。接口定义其实现类必须实现的方法。接口要求实现它的类必须包含它定义的方法,否则,编译器将会报错。实现类可以直接编码这些方法,或者从父类继承来也可以,接口并不关心这一点。只要编译的时候可以找到这些方法就可以了。
接口要求其实现类实现接口中定义的所有方法和属性,否则,编译器将会报错。
相关文章推荐
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page298
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page253
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page262
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page299
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page261
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page263
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page280
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page290
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page292
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page272
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page252
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page259
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page282
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page276
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page251
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page257
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page260
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page284
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page304
- Head First C# 中文版 图文皆译 第七章 接口和抽象类 page270