摘要: Java中的多态是如何实现的?父类引用指向子类实例时,父类引用调用方法时,jvm是如何动态地调用子类中的对应的方法?如下有两个类B和A,其中B继承A,B覆盖了A类中的test方法。public Class A{public test(){}}public Class B extends A{public test(){}}A a=new B();a.test();其中jvm是如何动态地调用B类中的test 方法?a声明为类型A是方便编译器能够编译时检查a是否可以调用test()方法,在实际运行时JVM记录a的实际类型是B;在JVM中,B有一张方法表(分为多行),每一行的内容是方法名和指向方法实 阅读全文
posted @ 2013-10-24 23:53 离子 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 栈、堆、常量池等虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,简单讲解Java内存分配方面的知识。首先我们先来讲解一下内存中的各个区域。stack(栈):存放基本类型的数据和对象的引用,即存放变量。如果存放的事基本类型的数据(非静态变量),则直接将变量名和值存入stack中的内存中;如果是引用类型,则将变量名存入栈,然后指向它new出的对象(存放在堆中)。heap(堆):存放new产生的数据。data segment:分为静态域和常量域。静态域:存放在对象中用static定义的静态成员(即静态变量,同理,如果该静态变量是基本类型则将变量名和值存入静态 阅读全文
posted @ 2013-10-24 09:21 离子 阅读(204) 评论(0) 推荐(0) 编辑