参数多态性与亚型多态性之间的概念差异?

sir*_*day 7 java polymorphism

我试图通过维基百科阅读,但它在多态性(特别是与Java相关)的主题上是如此密集.我的理解是亚型多态与子类型有关,参数多态与在不同对象/类之间推广的方法有关吗?我错过了什么?

Dan*_*lan 8

正如文章所说,

参数多态允许一般地编写函数或数据类型,以便它可以相同地处理值而不依赖于它们的类型......参数多态也可以在几种面向对象的语言中使用,它通常以"泛型"的名称命名"(例如,Java)或"模板"(C++和D)

所以这意味着(作为一个例子)你可以创建一个能够列出一些东西的函数,并且无论那些东西什么,函数都可以工作.想一个返回Collection中元素数量的方法.您可以传入任何类型元素的列表,它将返回一个答案.您不必为传入的每种列表重写该函数.

有些语言采用子类型的思想来限制可以在特定多态性情况下使用的类型范围.在这些语言中,子类型多态性(有时称为包含多态性或动态多态性[需要引用])允许编写函数来获取某种类型T的对象,但如果传递属于某种类型的对象也能正常工作S是T的子类型

换句话说,您可以使用一种方法将Animal作为参数,但您也可以将Cat或Dog传入其中,因为Cats and Dogs是动物.