Java与Python都是有虚拟机的编程语言,但是,这两中语言在类的继承方面绝不一样,比如我们来写这样一个例子,如下图所示:
执行命令:
然后,我们写两个程序看看:
test.java和test.py
如下图所示:
此时运行代码,我们会发现运行效果略有不同,如下图所示:
java在初始化子类时,父类的构造方法也运行了,而且顺序是先初始化父类的构造函数,然后是子类的构造函数,而python在初始化子类时父类的构造方法并没有运行,这是为什么呢?
其实,java需要先编译一下,编译成功之后由java虚拟机执行,它在编译过程中先初始化父类,然后初始化子类,所以运行时先运行父类的构造函数,然后运行子类的构造方法。
而python是完全基于虚拟机的,可以直接解释python语言,完全不许要编译,所以不会运行父类的构造方法,这也就是python和java同为虚拟机语言执行效果却不同的原因。