日期:2014-05-20  浏览次数:20717 次

程序关于访问父类中的变量
我觉得答案为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


------解决方案--------------------
多态啊.你上网找找多态的例子,多的很.
------解决方案--------------------
由于app.m_data是int类型,而app.mb_method()返回的是String类型,
当你将这两个类型不一样的数据相加时,并且你要在这个过程打印出来,系统会将这个int转换成会
String类型的"1",然后与String “4”结合,即"14";
这个问题与多态无关
------解决方案--------------------
app.m_data 为什么为 1 啊?
而mb_method() 为4
------解决方案--------------------
因为app声明为J_Base类型,就只能访问J_Base或者其超类里的变量
------解决方案--------------------
mb_method()是个方法,在子类里重写了,所以是4
------解决方案--------------------

上转型,对象调用方法是调用子类的,而变量是应用超类的
何况很少把变量写成楼主这样的
------解决方案--------------------
我也不知道。。期待高手回答
------解决方案--------------------
mb_method()是个方法,在子类里重写了,所以是4
这就是多态 子类继承父类,执行子类的方法