我有个panel,我想用 panel.getComponents()把 所有的内含组建都得到,然后用for each循环对每个组件设置unable,但是现在问题是,getcomponents返回的是 component[],而component是抽象类,抽象类是不能事例化的,
component[]是个抽象类的数组,怎么可能存放panel里面实例化的所有组件呢,不是抽象类都不能实例化嘛? 刚刚我这样写,竟然还编译成功了
for(Component i :aNahmePanel.getComponents())
                            i.setEnabled(true);                    我还竟然用抽象类实例了i,
 我搞不懂,为什么,帅哥 能不能帮忙解答一下?

解决方案 »

  1.   

    component是返回的引用的类型,而不是引用指向的实例的类型.
      

  2.   

     那我在for each里面也定义了Component i,这难道也不是实例化,也是返回的引用的类型? 
    那我怎么能判断,什么时候是 实例化,什么时候是引用类型呢?
      

  3.   

    把引用和对象本身区分开吧,不弄清这个,就很难理解多态的.public List getList()
    {
      List list = new ArrayList();
      return list;
    }public void test()
    {
      List l = getList();
    }最常见的例子,在test()方法里l是什么? 是一个引用? 一个引用指向的对象?
    指向了什么? 
    List接口的实例?
    ArrayList类的实例?这个基础知识在许多java资料里有,
    弄明白在考虑继续java UI相关的练习吧┐(─__─)┌ 
      

  4.   


    只要你调用没有new,那么你都只是将变量指向一个引用而已