Python面试题之Python和Java中Super方法的区别

python 的 super 是一个函数,需要两个参数,第一个参数是类,第二个参数是实例,返回值是一个类对象。

其意义是:站在参数2这个实例的角度看去, 参数1这个类的‘父亲’是谁,把‘父亲’返回。

详情见这里。

Java 的 super 是一个引用,即一个指针,它指向的是本类内部的那个父类对象。

可以用 super.xxx 来访问父类的成员变量或成员函数。

另外 Java 的 super 有一个特殊用法,就是 super(args),看起来像个函数似的,其实不是。

这种特殊用法只限于写在构造函数的第一行,用来显示的调用父类的构造方法。 

因为构造方法是无法通过对象加点操作法来调用的,即 super.FaterConstructor() 是不合法的,所以 Java 用 super() 这种方式调用父类构造方法。

Java 对子类的构造方法的要求请看这里


=================================

Java 中想调用父类的方法,直接用 super.method() 即可

Python 中想调用父类的方法,需要用 super(本类名,self).method()

Java 如果想调用父类的构造方法,要用 super()

Python 调用父类的构造方法跟普通方法一样的,super(本类名,self).__init()__

参考