Base b=new Subclass();
因为B要向上转行,所以父类不可以访问子类的变量,只可以访问和父类一样的函数!

解决方案 »

  1.   

    这是多态性的问题。
    即Base b = new Subclass();中的b实际上是Subclass对象。所以b的x值是Subclass的值。
      

  2.   

    zgpp(要把专家分提上去)说的对,是谁的对象就调用谁
      

  3.   

    没有覆盖之说,Subclass继承了Base,实际上也继承了它的所有变量和方法,也就是说在Subclass里面其实有两个变量x,两个方法method,在子类的方法中可用super.x和super.method()访问来访父类相应的方法可以证明这一点。而子类定义的x和method其实也隐含了一个参数this,this.x和this.method。在System.out.println(b.x)中,正如panpan221()所说,b被转成Base类的对象,它访问的是Base中的x。在System.out.println(b.method())中,其实这里调用的是在子类中定义的method()方法,这就是动态绑定,也就是所谓的多态性,而在mothod()中返回的是this.x,也就是在子类中定义的变量x。