Dar*_*rio 11
多态性本质上不依赖于遗传.
多态性是一个相当抽象的概念,即为不同类型的值提供统一的接口.
在常见的面向对象语言(如Java或C#)中,这些接口是通过类继承提供的,但这是多态的一种可能实现,而不是一般的多态的概念.
Duck类型,结构类型,C++样式模板或类型类都提供了多态的其他实现.
只需看到所有这些多态代码,以便为鸭子提供一个接口......
interface Duck { void quak(); }
void DoQuak(Duck d) { d.quak(); }
Run Code Online (Sandbox Code Playgroud)
def DoQuak(d):
d.quak();
Run Code Online (Sandbox Code Playgroud)
template <typename T>
void DoQuak(const T& d) { d.quak(); }
Run Code Online (Sandbox Code Playgroud)
def DoQuak(d : { def quak() : Unit }) { d.quak() }
Run Code Online (Sandbox Code Playgroud)
class Quakable a where
quak :: a -> IO ()
doQuak d = quak d
Run Code Online (Sandbox Code Playgroud)