解决方案 »
- JAVA如何实现跟TELNET一样
- 高手帮看看是怎么回事?初学很菜!
- jxl 读取date类型的cell的问题
- JDBC传递RS的疑问
- 父子之間繼承問題 ?
- JAVA 事件监听类和线程同步的问题.(由于系统限制,本人愿再加300分)
- 帮忙调试聊天室程序!
- 这是我的CMD界面,为什么得不到.CLASS文件,也没有出错信息
- 用java做application,怎么把报表做得美观一些,有什么办法,哪里可以下载相关控件?
- JBuilder或Java中如何使长时间的循环中能够处理jProgressBar进度条的进度?
- 怎么实现下面这个类的克隆?
- 给位高手大大们给予解释啊,解释下为什么可以用这个表示,并且还都不一样。。
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {} ” 对吧?原来如此!谢谢。
如果先执行“class InstanceofDemo” 还没定义“class Child extends Parent implements MyInterface”,上面的“obj2 instanceof MyInterface”为什么不是false? java程序在编译的过程之中会首先找到程序的入口,也就是main方法,main方法必须定义为static才属于是整个类所有的方法,这样运行的时候就直接从这个开始执行了,至于其他的方法放在什么位置那倒是没有什么要求,只要是在这一个文件里面,当执行到创建Child类的时候它会自动的调用它继承的parent类,因为里面有继承的关系,所以是parent的一个实例,即c.instanceOf(p)返回true。但是,要注意的一点就是,在不同的文件中,那就不是这样了。比如说,Parent类和Child类位于两个文件中,那就要变编译Parent类之后才可以编译Child类,否则就会报错,因为,直接编译Child类java虚拟机找不到里面继承的Parent类在哪里,因此就无法编译和运行成功,这个时候就要先编译Parent类在编译Child类。
InstanceofDemo
Parent
Child可以去看一下编译完成之后的.class文件,会生成3个
换句话说,你只是凑巧将3个类写在了一个文件里面,一旦编译之后,有几个类就会生成几个class文件,跟你方没放在一个文件里面没关系,只不过如果放在一个文件里面的话,有且仅有一个类是public的,并且该类的名字与文件名字一致那么根据JAVA用到才加载的原则,就不难理解了。
当程序执行,所有的字节码文件都会装载jvm.
而你new 一个对象时 Parent obj1 = new Parent(); Parent 已经被创建在了jvm中了,所以,你new之前Parent 已经存在jvm中了。