1. 声明
本文来源于维基百科:
Polymorphism (computer science)
2.定义
In programming languages and type theory, polymorphism or polyphormism is the provision of a single interface to entities of different types.
对不同类型实体的单一接口
3.分类
注:分类方法之一
3.1 Ad hoc polymorphism
when a function denotes different and potentially heterogeneous implementations depending on a limited range of individually specified types and combinations. Ad hoc polymorphism is supported in many languages using function overloadin
代码示例:
program Adhoc;
function Add(x, y : Integer) : Integer;
begin
Add := x + y
end;
function Add(s, t : String) : String;
begin
Add := Concat(s, t)
end;
begin
Writeln(Add(1, 2)); (* Prints "3" *)
Writeln(Add('Hello, ', 'World!')); (* Prints "Hello, World!" *)
end.
Ad-hoc polymorphism 又称重载 Overloading( function overloading or operator overloading)
3.2 Parametric polymorphism
when code is written without mention of any specific type and thus can be used transparently with any number of new types. In the object-oriented programming community, this is often known as generics or generic programming. In the functional programming community, this is often shortened to polymorphism.
代码示例:
class List<T> {
class Node<T> {
T elem;
Node<T> next;
}
Node<T> head;
int length() { ... }
}
List<B> map(Func<A, B> f, List<A> xs) {
...
}
Parametric polymorphism
1. 在C++中体现为 templates 模板
2. 在Java中体现为 generics 泛型
3.3 Subtyping
(also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass. In the object-oriented programming community, this is often referred to as simply Inheritance.
代码示例:
abstract class Animal {
abstract String talk();
}
class Cat extends Animal {
String talk() {
return "Meow!";
}
}
class Dog extends Animal {
String talk() {
return "Woof!";
}
}
static void letsHear(final Animal a) {
println(a.talk());
}
static void main(String[] args) {
letsHear(new Cat());
letsHear(new Dog());
}
Subtype polymorphism 体现为 继承 Inheritance 后的 重写 Overriding
本文介绍了计算机科学中的多态性概念,包括其定义、不同类型的多态性(如Ad-hoc多态性、参数多态性和子类型多态性)及其在编程语言中的应用实例。
1657

被折叠的 条评论
为什么被折叠?



