python与Java中类的继承中的异同点

By | 2014/04/20

Java与Python都是有虚拟机的编程语言,但是,这两中语言在类的继承方面绝不一样,比如我们来写这样一个例子,如下图所示:
执行命令:
2014-04-20 15:43:14的屏幕截图

2014-04-20 15:19:37的屏幕截图
然后,我们写两个程序看看:
test.java和test.py
如下图所示:
2014-04-20 15:41:15的屏幕截图

2014-04-20 15:36:28的屏幕截图
此时运行代码,我们会发现运行效果略有不同,如下图所示:
2014-04-20 15:44:33的屏幕截图
java在初始化子类时,父类的构造方法也运行了,而且顺序是先初始化父类的构造函数,然后是子类的构造函数,而python在初始化子类时父类的构造方法并没有运行,这是为什么呢?
其实,java需要先编译一下,编译成功之后由java虚拟机执行,它在编译过程中先初始化父类,然后初始化子类,所以运行时先运行父类的构造函数,然后运行子类的构造方法。
而python是完全基于虚拟机的,可以直接解释python语言,完全不许要编译,所以不会运行父类的构造方法,这也就是python和java同为虚拟机语言执行效果却不同的原因。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.