我觉得答案为34,为什么为14
class J_Base{
  public int m_data=1;
  public String mb_method()
  {return “2”;}
}
class J_Test extends J_Base{
  public int m_data=3;
  public String mb_method() {return “4”;}
  public static void main(String args[]){
J_Base app=new J_Test(); System.out.println(app.m_data+app.mb_method());
}
}
答案:14
我觉得app.m_data为3,app.mb_method())=4

解决方案 »

  1.   

    由于app.m_data是int类型,而app.mb_method()返回的是String类型,
    当你将这两个类型不一样的数据相加时,并且你要在这个过程打印出来,系统会将这个int转换成会
    String类型的"1",然后与String “4”结合,即"14";
    这个问题与多态无关
      

  2.   

    app.m_data 为什么为 1 啊?
    而mb_method() 为4
      

  3.   

    因为app声明为J_Base类型,就只能访问J_Base或者其超类里的变量
      

  4.   

    mb_method()是个方法,在子类里重写了,所以是4
      

  5.   

    mb_method()是个方法,在子类里重写了,所以是4
    这就是多态  子类继承父类,执行子类的方法