规范中说到:list是一个接口,而ArrayList实现了List接口,为什么我不能用ArrayList的一个对象直接调用List的方法并把结果存储到ArrayList的对象中呢,非要把结果存储到List对象中呢,再说List只是一个接口,应该没有实例生成的吧;

解决方案 »

  1.   

    例如:List list =new ArrayList();List虽然是接口,但是new ArrayList()了以后其实list是变成了ArrayList的实例了。
      

  2.   

    这个我知道,可是非要用List的变量来引用吗,直接用ArrayList的变量进行调用为什么会出错哪
      

  3.   

    OO的三大特性:继承、重载、多态。
    你的问题涉及多态,为什么要List list=new ArrayList();必然有它的妙处。
    啃书!!!
      

  4.   

    OO的原则我是不懂  但是我觉得List list=new ArrayList()这样做是比较好的!
     就是父类调子类的 而子类是不能调父类的!
    就比如说 你只能继承你父亲的财产,而不能继承他的所有把!!
    嘎嘎!
      

  5.   

    根据面向对象原则,呵呵,笼统讲是对象中的多态!
    你也可以ArrayList a = new ArrayList();
    但根据对象原则不提倡吧!
      

  6.   

    问这种问题的帖子最近看见很多~~~一般函数的形参都定义为父类或父接口,这样就可以把子类或子接口作为实参传入
    如果你直接用arraylist的话,你定义的变量就只能传入形参是arraylist的函数里了
    就是说,定义成list的变量,可用的范围(不是指作用域)更大
      

  7.   

    List someList=new ArrayList();
    someList.add()...记得啊!就是这么个固定用法,深究这个,浪费时间。
      

  8.   

    lz认识上有错误,“ArrayList的对象和List对象”你这种想法就是错误的。应该叫"ArrayList的对类型的对象和List类型的对象"。
    就像说,动物和人,LZ是人,所以楼主也是动物。
    动物 a = new 人()
    人   p = new 人()
    这里a是声明一个引用,它引用一个动物的对象;p声明一个对人的引用。但实际上人也是动物,
    所以让a=new 人(); 就是说a代表一个动物,而具体是什么动物我不去管它。而p就明确了,只是一个人。所以在只知道a是一个动物的情况下,只能调用a的动物方法。如果你知道a不仅是动物而且还是一个人类,那就可以把它转型为更具体的人类型,就可以调用人的行为(方法)了。
      

  9.   

    这是基础知识,要多学学基础的内容,建议多看看《Thinking In Java》
      

  10.   

    List是一个接口啊,当然不能实例化了哦.呵呵.你可以用它来创建实现它的类.但是,你用
    List list=new ArrayList();声明的list类,只能使用List接口里声明的方法,而不能使用
    ArrayList自带的方法.
      

  11.   

    就是个向上转型而已~~~
    为什么要这么写,你只需要知道list就是个实现了List接口的类的一个实例而已。不需要知道太多,多看几遍《think in java》中的RTTI对你有好处~~