我正在做一个家庭作业(一个项目),其中一个标准是我必须以明显改善代码整体质量或功能的方式利用多态性。
我做了一个看起来像这样的哈希表:
public class HashTable<E extends Hashable>{
...
}
其中Hashable是我制作的具有hash()函数的接口。
我知道以这种方式使用泛型可以提高代码的质量,因为现在HashTable可以使用我想要的任何类型(例如,而不仅仅是int或Strings)。但我不确定它是否证明了多态性。
我认为确实如此,因为E可以是任何实现Hashable的类型。换句话说,HashTable是一个可以(几乎)使用任何类型的类。
但我不太确定 - 是那个多态?或许我可以得到一些关于多态性究竟是什么的澄清?
提前致谢!
编辑:收到以下答案后(请参阅:first answer received),我阅读了维基百科文章,并发现了这一点:
“在面向对象的编程社区中,使用参数多态的编程通常称为泛型编程。” (重点补充)
答案 0 :(得分:6)
是的,它被称为parametric polymorphism。你将它归类为多态的原因是现场点击。
答案 1 :(得分:6)
BaseClass.
“
您的示例使用多态,因为您定义了一个Hashable
基类 - 并提供了一个仅关注它接收的对象的那个方面的函数。 Hashable
个对象可能有多种形式,但您的代码将它们全部视为单个基本类型。
答案 2 :(得分:3)
除了参数多态之外,你可能会调用存储在哈希表中的对象的hashCode
方法,这是John引用的多态的一个例子。 HashTable依赖于参数多态,而E依赖于(普通)多态。
答案 3 :(得分:0)
虽然Rob的答案在某些技术意义上可能是正确的,但我认为这不是所要求的。我认为wikipedia article更有可能成为您所需要的。