python和java中继承的区别概述

Har*_*rpy 5 python java inheritance multiple-inheritance

我有java背景,正在学习python。我很快就需要使用继承,我想找出每个继承的工作方式之间有什么主要区别。我在网上看了一下,发现了一些关于两者之间差异以及要注意什么的信息,我发现 python 支持多重继承,但我想知道任何其他特定于继承的差异。我不需要被告知语法(除非有一些我真的需要注意的东西),我已经看过它了,我会接受的。

Python 不是 Java
Python 类:Java 程序员的多重继承
Python

我无法真正找到我正在寻找的内容,即差异概述和需要注意的内容。

Nul*_*ion 4

Java 有一个相当简单的继承模型:类必须有一个(且只有一个)父类。虽然你可以实现多个接口,但你不能从多个父类继承,这可以看作是Java版本的“多重继承”。

staticJava 类中的大多数方法都是动态(后期)绑定的,但privatefinal父类中声明的方法除外。

在 Python 中,正如您所指出的,您可以从多个(或没有)父级继承。请注意,通过多重继承,您可能会遇到“钻石问题”。您应该了解 Python 如何解决这个问题,以及当您在 Python 中引用父类时(即:谁是您的爸爸?)

在Python中,一切都是动态绑定的,并且由于您可以向实例添加成员,因此不能保证同一类的所有实例都具有相同的成员。

最后,构造函数的重写方式略有不同:在 Java 中,子类必须调用父类的构造函数(细化重写),而在 Python 中,子类可以重写构造函数而不调用父类的构造函数(替换重写)。