本帖最后由 alienshaw 于 2012-01-06 23:03:39 编辑

解决方案 »

  1.   

    类定义的完整装载过程指的就是“
    class Parent {}
    class Child extends Parent implements MyInterface {}
    interface MyInterface {}   ”  对吧?原来如此!谢谢。
      

  2.   

    编译、装载、顺序执行main里的语句。
      

  3.   

    Java是从main语句开始执行的,遇到需要用的类就会加载它
      

  4.   

    java 是先编译成 class 文件,其实这个时候已经编译完了,你运行时调用该类其实已经是编译之后了。
      

  5.   

    应该   Java是从main语句开始执行的,遇到需要用的类就会加载它
      

  6.   

    Java是从main语句开始执行的,遇到需要用的类就会加载它
      

  7.   

    代码放在开头和放在结尾效果是一样的,java执行不是从上到下的。
    如果先执行“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类。
      

  8.   

    这个问题其实很简单,你在一个文件里面定义了3个类
    InstanceofDemo
    Parent
    Child可以去看一下编译完成之后的.class文件,会生成3个
    换句话说,你只是凑巧将3个类写在了一个文件里面,一旦编译之后,有几个类就会生成几个class文件,跟你方没放在一个文件里面没关系,只不过如果放在一个文件里面的话,有且仅有一个类是public的,并且该类的名字与文件名字一致那么根据JAVA用到才加载的原则,就不难理解了。
      

  9.   

    从上到下的顺序是对的。
    当程序执行,所有的字节码文件都会装载jvm.
    而你new 一个对象时   Parent obj1 = new Parent();   Parent 已经被创建在了jvm中了,所以,你new之前Parent 已经存在jvm中了。