gpt4 book ai didi

oop - 多态性和鸭子类型(duck typing)有什么区别?

转载 作者:行者123 更新时间:2023-12-03 09:21:19 26 4
gpt4 key购买 nike

我对这两个术语有点困惑,这就是我所知道的:

多态性是不同类型的对象由一个公共(public)接口(interface)处理的能力。而鸭子类型(duck typing),是一种动态类型,它允许不同类型的对象响应相同的方法。

据我了解,多态更多的是创建一个可以在不同类之间共享的接口(interface)。鸭子类型(duck typing)是关于松散类型的,只要在消息的接收者上找到方法,就可以调用它。

它是否正确?我对这两个很困惑,他们似乎有关系,但我不知道他们的关系是什么。提前非常感谢!

最佳答案

多态性 (在面向对象编程的上下文中)意味着子类可以覆盖基类的方法。这意味着一个类的方法可以在子类中做不同的事情。例如:一个类Animal可以有方法talk()和子类DogCatAnimal可以让方法talk()发出不同的声音。

鸭子类型(duck typing)意味着代码将简单地接受具有特定方法的任何对象。假设我们有以下代码:animal.quack() .如果给定对象 animal有我们想要调用的方法然后我们很好(不需要额外的类型要求)。 animal 是否无关紧要实际上是一个Duck或另一种动物,它也恰好会嘎嘎叫。这就是为什么它被称为鸭子类型(duck typing):如果它看起来像一只鸭子类型(duck typing)(例如,它有一个名为 quack() 的方法,那么我们可以将这个对象当作一只鸭子类型(duck typing))。

那么这些有关系吗?它们只是编程语言可能具有的单独功能。有些编程语言具有多态性但没有鸭子类型(duck typing)(例如Java)。还有一些语言具有多态性和鸭子类型(duck typing)(例如 Python)。

关于oop - 多态性和鸭子类型(duck typing)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com