gpt4 book ai didi

php - 接口(interface)只是 "Syntactic Sugar"吗?

转载 作者:太空狗 更新时间:2023-10-29 19:30:49 26 4
gpt4 key购买 nike

我主要使用 PHP 和 Python。

我一直在阅读 OO 编程中的接口(interface),但看不到使用它的优势。

多个对象可以实现相同的接口(interface),但多重继承不也能做到这一点吗?

为什么我需要创建一个“没有实现”的接口(interface)——主要是一个“契约”——如果我只能检查一个方法是否存在于 Python 中的一个对象中,它继承自多个类?

接口(interface)是用其他语言创建的,因为它们不提供多重继承吗?还是我在这里遗漏了更重要的东西?

最佳答案

首先,也是最重要的,尽量不要在 Python 和 Java 之间进行比较和对比。它们是不同的语言,具有不同的语义。比较和对比只会导致像这样的令人困惑的问题,你试图将 Python 不使用的东西与 Java 需要的东西进行比较。

这很像比较数字 7 和绿色。都是名词。除此之外,您将无法比较两者。

这是底线。

Python 不需要接口(interface)。

Java 需要它们。

Multiple objects can implement the same interface, but multiple inheritance doesn't provide this as well?

这两个概念几乎没有任何关系。

我可以定义大量共享一个公共(public)接口(interface)的类。在 Python 中,由于“鸭子类型”,我不必仔细确保它们都有一个共同的父类(super class)。

接口(interface)是不相交类层次结构的“意图”声明。它提供了一个不属于简单类层次结构的通用规范(可以由编译器检查)。它允许多个类层次结构来实现一些通用功能,并针对这些功能实现多态。

在 Python 中,您可以通过我们的无接口(interface)使用多重继承。多重继承可以包含接口(interface)类,也可以不包含接口(interface)类。

Java 甚至没有多重继承。相反,它使用了一种完全不同的技术,称为“mixins”。

Why do I need to create an Interface "with no implementation" - mainly a "contract" - if I can just check if a method exists in an object in Python, that inherits from multiple classes?

如果您在 Python 中创建一个接口(interface),它可以是一种正式契约。声明所有子类都将绝对执行接口(interface)声明的操作。

当然,一个 NumPy 的人说谎是完全自由的。他们可以从接口(interface)继承并错误地实现所有内容。没有什么能阻止反社会者的不良行为。

您在 Java 中创建一个接口(interface)以允许多个类的对象具有共同的行为。由于您在 Python 中没有告诉编译器很多,所以这个概念甚至不适用。

Do Interfaces were created in another languages because they don't provide multiple inheritance?

由于概念不相关,所以很难回答这个问题。

在 Java 中,他们确实使用“mixin”而不是多重继承。 “接口(interface)”允许混合一些附加功能。这是接口(interface)的一种用途。

另一种使用接口(interface)来区分"is"和"is"的方法。类层次结构定义了对象是什么。接口(interface)层次结构定义了类的作用。

在大多数情况下,IS 和 DOES 是同构的,因此没有区别。

在某些情况下,对象是什么和对象做什么是不同的。

关于php - 接口(interface)只是 "Syntactic Sugar"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134531/

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