在内存机制中,父类和子类是占用同一块内存的,只不过子类在父类的基础上增加了自己的部分(包括数据成员和属性),这样一来就好理解了。子类是依附于父类的,先有父类再有子类。所以说一个子类对象的产生,必须先调用父类的构造函数产生一个父类实例,然后在这个实例基础上添加自己的部分。
而实际的运行机制,也正是这样的。
因为这样就很容易理解了,先调用父类的构造函数,再调用子类的构造函数。
而对于父类和子类里重写的方法的调用,关键要看:子类到底是否产生,如果子类产生了,子类改写了父类的方法,看似父类和子类各自有一个方法,其实它们在内存模型里占用的是同一块内存,子类方法会覆盖父类方法。
 可以去goole或百度,有很多资料的,例如:http://dev.21tx.com/2005/03/24/12400.html

解决方案 »

  1.   

    刚开始接触J2SE会认为继承,抽象什么的用来反而像是绕了道湾,这种思想转变看似很是麻烦,其实当用熟后,会切身体会到其好处。打个比方,也许不是很恰当,抽象和接口的应用,就像是C中的递归,很复杂的问题,层层往下,问题集中化,打个不是很恰当的比方,好像是管理公司,要利润,老总叫秘书去办,秘书通知经理去办,经理叫业务员去跑腿,除了业务员付出实实在在的精力外,其余的上级都是在传达命令,上级只知道要叫哪个哪个,而不管具体业务员怎么去做的。这种体系就很明显的分层了,出了问题或是想扩展业务项目,就不会牵一发而动全身了。上级就好比代码框架,你写的抽象类或是接口,业务员就是具体实现功能类。
      

  2.   

    离开了继承,多态,抽象不叫oop