解决方案 »

  1.   

    亲,那是因为子类是重写了父类的方法,虽然实际上运行时调用的还是子类的方法,但是在编译的时候,编译器认为调用的还是父类的方法。所以编译器不会报错。
    而你说的Object,那是因为Object类里面没有子类的方法,所以直接调用子类方法编译器会报错,需要强制类型转换。
      

  2.   

    子类继承父类、子类调用父类的方法实际上是子类通过子类构造器调用父类的方法,每个类都会有一个无参的构造器,构造器中的super()方法调用父类。
      

  3.   

    Object  oj = new SubClass();
    (SubClass)oj.subMethod();    //转换后调用方法SuperClass sc = SubClass();
    sc.subMethod();    //直接调用方法不知道你是不是这个意思。如果是。那么
    你觉得Object对象会有子类SubClass的subMethod方法吗?如果没有,那么它怎么调用,这个是编译期错误而在SuperClass与SubClass之间,肯定有重写SubMethod方法,所以SuperClass是有这个方法的,那么父类SuperClass就可以调用,但是它最终调用的,还是子类重写的SubMethod方法,为什么?因为运行期时,会定位到实际类型,然后动态连接到实际类型的方法