Dan*_*her 16 java polymorphism
据我所知,参数多态是一种允许对各种数据(类型)进行统一操作的技术.我的知识是否正确?
这个例子是参数多态吗?我相信这是因为Animal.talk允许在不使用特定动物类型(猫或狗)的情况下调用谈话.
public interface Animal
{
public String talk();
}
public class Cat implements Animal
{
public String talk()
{
return "Cat says Meow!";
}
}
public class Dog implements Animal
{
public String talk()
{
return "Dog says Woof! Woof!";
}
}
import java.util.*;
public class PolymorphismExample
{
public static void main(String[] args)
{
Collection<Animal> animals = new ArrayList<Animal>();
animals.add(new Cat());
animals.add(new Dog());
for (Animal a : animals)
{
System.out.println(a.talk());
}
}
}
Run Code Online (Sandbox Code Playgroud)
问候.
编辑:如果我的例子没有具体展示参数多态性,请你提供一个?谢谢.
Ósc*_*pez 22
"参数多态"只是Java中"泛型"的另一个术语.这个想法很简单:你说明了特定类将使用哪些类型,这个java.util包的所有集合中都有一个明显的例子.
为了学习Java中泛型的所有细微差别,我强烈推荐Angelika Langer的FAQ,它探索了规范的每个角落.
在您的代码中,此行是使用泛型的示例:
Collection<Animal> animals = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)
指定一个集合来保存任何动物对象.
维基百科:
在编程语言和类型理论中,参数多态是一种使语言更具表现力,同时仍然保持完全静态类型安全性的方法.使用参数多态,可以一般性地编写函数或数据类型,以便它可以相同地处理值而不依赖于它们的类型.这些函数和数据类型分别称为泛型函数和通用数据类型,并构成泛型编程的基础.
所以标准的Java库集合就是一个很好的例子.
例如,Collections.sort声明为:
public static <T extends Comparable<? super T>> void sort(List<T> list)
Run Code Online (Sandbox Code Playgroud)
它可以采用T类似于其他类型的对象列表并对列表进行T排序,而不必担心T实际上是什么类型.
它与亚型多态性不同:亚型多态性的例子是sort可以采取任何种类的事实List- 一ArrayList,a LinkedList等.
恰恰。参数多态性通常是指泛型/模板。
来自维基百科:
使用参数多态性,可以通用地编写函数或数据类型,以便它可以在不依赖于类型的情况下以相同的方式处理值。
| 归档时间: |
|
| 查看次数: |
19361 次 |
| 最近记录: |