程序如下:
class Base      //定义一个父类
{
public int i;
public void setData()
{
i = 20;
}
};
class Derive extends Base     //子类
{
public void showData()
{
System.out.println(i);
}
};
class Test
{
public static void main(String[] args) 
{

Base abase;   //声明一个Base对象
                  abase = new Derive();   //初始化为Derive类
                  abase.setData();      //设置i...
abase.showData();   //这里就出错了..提示找不到.showData()....
}
}
/////////////////////////////////////////////////////////
我把声明Base abase;改成 Derive abase;就能通过结果为20......
这是为什么呢?~....
初学JAVA...卡住了..求教...不胜感激!~~

解决方案 »

  1.   

    abase.setData();      //设置i...
    abase.showData();   //这里就出错了..提示找不到.showData()....
    我把声明Base abase;改成 ;就能通过
    ------------------------
    因为你申明的abase是Base的对象 而Base中没有showData方法 自然会提示找不到
    改成Derive abase后  abase就是Derive的对象 
    你在写Derive的时候 类中有此方法 所以通过
    ----
    我也初学 好不到哪去 互相学习下吧
    解释不对的请指出
      

  2.   

    Base abase 中没有showData()方法,
    Derive abase中则有。
      

  3.   

    不好意思~~我还是有些不明白的地方~~
    Base abase 是声明一个Base对象,所以abase中没有showData()方法~~
    那么...abase = new Derive()是做什么处理呢?~~能帮我理解一下吗?~