要想弄懂这个问题,要好好研究一下class文件的结构,JAVA虚拟机规范里面有讲,但是偶还没有细致的研究过。。调用super()方法是来确保父类在子类中的成员能得到初始化,当存在多态的时候子类的this和夫类的this应该是做了某一种关联,因为this是一个常量,所以是不能改变它的值的,当有多态的时候,子类和夫类的this都是关联到了子类对象。。所以super()的时候可以其实用的还是夫类的this,因为只有夫类的this,夫类才可以访问,而子类的this夫类构造器里是无法访问的。。并且不知道大家有没有发现当存在多态的时候,类加载机制都会发生变化,并不是我们所说的当用到的时候才加载到内存,当存在多态的时候,编译器会做一定的优化,这样以来当程序启动的时候设计到多态的夫类和子类就已经加载到内存中了,并不是等用到的时候才加载。。
最后再说说我对JAVA的理解,其实我觉得你以后想底层的话,可以先学编译原理什么的,然后在学JVM具体怎么实现的。当然这还要有点汇编(以前我觉得我学习汇编都没有什么用,只从我看了JVM指令后,我才发现汇编的用处,JVM到最后都是解释为了汇编指令,然后再是机器指令)。不过我觉得学JAVA其实就好建造楼房,那些砖头都已经生产好了,我们所需要做的就是用砖头建造楼房,而不是建造砖头,而学习如何建造楼房的问题就设计到了真正一个架构师的灵魂:设计模式。这才是关键,可以说不学设计模式,写出来的代码只有功能,没有什么性能。当然还要要学点DDD什么的。这也是偶的一点看法。。。不对的地方请多包含。。
[此贴子已经被作者于2007-8-28 14:36:15编辑过]