回答
接口和多态不是特定于任何语言,而是用于对问题和解决方案空间进行建模的概念。所有面向对象的语言都提供了一种方法来实现或实现与这些概念紧密匹配的代码。
在看什么之前?让我们简单看看你为什么需要它们?以及它们如何有用。接口的
简单的例子是“汽车”始终有相同的接口断裂,加速,一旦你知道如何来驱动一个你可以驾驶任何汽车。因此,如果一个人(解决方案)获得这个统一的汽车界面,而不管他能驾驶哪种车型和车型,那就是为什么你几乎可以驾驶任何汽车。当您编写代码来解决某个特定类别的问题时,您可以将解决方案重复用于提供类似接口的多个域或对象。
多态性简单的例子,看看帐户(可以检查或保存假设每个吸引不同股息)你走进一家银行,并要求出纳什么是我的平衡?或分红?你不需要指定你有什么样的帐户,他会在内部找出他的书籍并提供详细信息。有关每个案例(检查和储蓄)的出纳员工作方式的内部细节对于您而言都是隐藏的,任何人都可以走进来问问题并获得适合有关人员的答案。所以出纳员是多形的(他正在改变他的工作规则或形式)以适合客户。
接口,如汽车例如提供一份合同,你坚持该合同一组解决方案,可只要有问题接口同样适用于其他域中的对象的工作,只要。 Interfaces promote reuse of solutions by making them generic.
只要你有信用卡,你可以喝啤酒种类,你不需要为每种信用卡有特别的酒吧。
多态性像在柜员帐户示例Promote reuse of interface or messages by reusing same message or interface to provide different but semantically equivalent mechanisms
。你拿起你的电话并拨打一个号码,不管目的地号码是固定电话还是手机还是别的什么地方,这里拨号10位数字的接口在每个语义上相同的机制中都被重复使用。现在
你可以继续查找一些接口在VB。NET或PHP,我不是很了解这些语言
看看方式Controls(VB.NET)对类似方法作出反应,以查看多态性的行动。接口查找实现IEnumerable(从上面的答案),或ISerializable和实现它们的对象。
嗯,你已经使用的接口,如果你曾经使用过For Each
循环。编译器知道关于IEnumerable(Of T)
接口,所以它能够通过调用GetEnumerator()
得到一个IEnumerator(Of T)
遍历任何序列,然后调用MoveNext()
和Current
反复读取序列的元素。无论你是在迭代List(Of T)
,LinkedList(Of T)
,HashSet(Of T)
还是其他什么都可以。你只能依靠接口。 LINQ to Objects也基于此(尽管对其他接口类型进行了一些特定的优化)。
对于多态性,我通常使用Stream
,例如,编写使用任何Stream
而不关心它是否实际上是FileStream
,NetworkStream
,MemoryStream
或其他的代码很容易。流实现将覆盖适当的成员,使其“只是工作”。
- 1. 关于SignTTest的一些更多提示
- 2. iPhone界面示例
- 3. 动态用户界面创建提示
- 4. 关于在iPhone上实现自定义UITextView界面的提示?
- 5. 需要一些关于代码的一部分的提示
- 6. PHP类型提示界面
- 7. 简单示例中的C++多态性
- 8. C++库中的buit多态性示例?
- 9. 需要一些关于Hadoop Mapreduce的Kmean示例
- 10. 关于多态性
- 11. 关于RESTful和Shiro集成的示例
- 12. 需要关于分布式c#桌面应用程序的一些提示
- 13. 需要关于Cocoa MVC/KVO模式的一些提示
- 14. 关于GTMMIMEDocument的示例
- 15. 使用SubProtocolWebSocketHandler和stompSubProtocolHandler的一些示例?
- 16. 用户界面:展示“拥有”和“属于多种”关系的不同方式有哪些?
- 17. 关于Asp.net mvc的提示和技巧
- 18. 多对多关系示例
- 19. 关于ASP.Net的真正的一个页面示例MVC
- 20. 关于如何在Python中批量命名多个文件的一些提示
- 21. Android:关于CameraPreview的提示
- 22. 关于checkstyle的提示
- 23. 关于RTNPARM关键字和用例的示例
- 24. Java中的枚举和多态性,扑克牌示例
- 25. C++中的多态性和类抽象示例
- 26. 使用界面组合怪诞怪异的界面多态性
- 27. 动态关键字示例
- 28. 示例和关于LoadFunc的更多解释
- 29. 需要关于抽象方法调用方法和字段的一些提示
- 30. 哪些cmdlet使用IHostUISupportsMultipleChoiceSelection界面来提示进行选择?