java中所有没有标明父类的类都默认为Object子类,那么为什么自己编写Object类能正确运行呢?难道父类和子类可以同名吗?

解决方案 »

  1.   

    只要不在同一包下,同名是可以的。继承值类描述类的聚合关系,是JVM在解析加载类时的业务描述,体现在类的结构上,跟类的名字没关系。JVM会在加载类时将Object类的相关特性附加给java类,依然是结构上的,跟类的名字没关系的。
      

  2.   

    比如你在包cn.com.mypackage下定义一个Object类。
    那么它的名称叫做cn.com.mypackage.Object.java而你说的Object是java.lang.Object虽然,二者简称都是Object,但类的全称就不一样了。这也是类名前要有包名的作用。而如果你也定义了定义java.lang.Object ,那么虚拟机也是去加载jdk中的那个Object,不会加载你定义的。
      

  3.   

    你说的这两个Object是完全不同的,你自己定义的一个Object类,仅仅是把类的名字命成了Object,而与命成其他的名字是一样的, 可是java本身JVM的Object类是所有类的根,
    java.lang 
    类 Object
    java.lang.Object--------------------------------------------------------------------------------public class Object类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。