gpt4 book ai didi

java - Python 多态 VS JAVA 多态

转载 作者:行者123 更新时间:2023-12-01 17:30:08 25 4
gpt4 key购买 nike

我试图理解Python中的多态性。读了很多文章,但我心中仍有一个疑问。当我与 Java 进行比较时,Python 对我来说有点令人困惑。

据我所知,多态性是“一物有多种形式”。多态性可以使用运算符重载和方法重载来演示。让我们以方法重载作为演示多态性概念的一种手段。在java中我们可以不使用继承来编写它。请参阅下面的代码。

 public class Main{
public static void main(String[] args) {
System.out.println(add(1,2));;
System.out.println(add(1,2,3));
}
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
}

Python 代码:

class TestPolymorphism:
def add(self,a,b):
return (a+b)
def add(self,a,b,c):
return (a+b+c)

obj = TestPolymorphism()
print(obj.add(1,2)) #will get an error
print(obj.add(1,2,3))

相同的方法重载在 java 中有效,但在 python 中无效。为什么有区别?如果我想让它工作,那么我必须更改我的 python 代码,如下所示:

class TestPolymorphism:
def add(self,a,b,c=None):
if c ==None:
sum = a+b
return sum
else:
sum = a+b+c
return sum

obj = TestPolymorphism()
print(obj.add(1,2))
print(obj.add(1,2,3))

我不相信上面的代码是多态性的示例。有类似this的文章没有给我令人信服的观点。

谁能告诉我Python多态性背后的理论吗?

最佳答案

我一直这样理解:

多态性是一个概念,基本上是说它看起来是一样的,但根据上下文的不同,做的事情会有所不同。

  1. 如果你有一个同名的方法,但参数数量不同,这就是方法重载。

  2. 如果您有一个具有相同数量参数的同名方法,但根据类执行不同的操作,则这是方法重写。

注意:我说的是参数数量,对于动态类型语言,类型仅在运行时才重要。例如,对于 Java,它不仅是参数的数量,当然还包括类型。

两者都是处理多态性的具体方法。具体来说,根据您使用的语言,这个概念可能会被实现,有时甚至会以不同的方式解释。

关于java - Python 多态 VS JAVA 多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61138173/

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