最近几天在看java的视频,突然想到一个问题,这个问题一直困扰着我,具体是这样的:
List list=new ArrayList();
list.方法名();----这个方法只能是List接口中的方法,但据我所知,这个List只是一个接口,接口中的仅仅提供了各种方法的一个接口,并没有方法的具体实现,那么在List.add("sss");这个操作中的方法是怎么实现的???
接口里面并没有具体的实现方法啊!怎么可以真的就将数据添加进来了呢????????

解决方案 »

  1.   

    JAVA中提供了各种数据集合类,这些类主要用于保存复杂结构的数据,其中ArrayList集合可以看作是动态的数组,而List继承于Collection,而你实例话一个List集合后就可以使用Collection的Add方法啦.这些是我的个人看法有些地方可能解释的不是很清楚,所以请你多多包含.
      

  2.   

    list是接口 他里面写了add方法  由实现它的类去实现 比如你上面的ArrayList 就会去写详细的add方法
    这就是面对接口编程。接口不做任何操作,只是强迫实现它的类去实现接口里面所有的方法,到以后你就知道这样的好处了。
      

  3.   

    这不就是传说中的多态么:
    list是接口,而ArrayList是list的实现类多态的条件如下:
    有继承,有方法重写,有父类引用指向子类对象。在这种情况下,调用接口中的方法时,jvm会动态链接
    调用子类中实现的方法。
      

  4.   

    这就是多态嘛。 等价于这个(不考虑泛型)
    List list=null ;
    ArrayList al=new ArrayList();
    list =al;就是把子类的引用发送给父类的引用  
      

  5.   

    add是arraylist的
    你也可以new linkedlist
    linkedlist.add和arraylist.add的实现是不一样的
    但他都是add建议楼主看看设计模式
    然后就能比较好的理解多态了
      

  6.   

    list虽然是用List声明的,但却是ArrayList的实例,
    List告诉list:我有add()借口,至于怎么add你要去找ArrayList
    list就去调用了ArrayList的add()方法
      

  7.   

    两个字:多态。
    父类型的引用可以指向子类型的对象。
    实际上这个跟ArrayList list = new ArrayList();是一个东西,写法不同。
    当然,接口根据多态也有这一特性。接口不能实例化,但实现了这个接口的子类却可以,你声明的只是一个List的引用,没new就没有生产任何东西。
      

  8.   

    具体的实现代码在实现类里面就是ArrayList个里面
      

  9.   

    这个是多态,父类对象,调用的其实是子类对象的方法,这里的add()方法其实是ArrayList的add()方法。你的理解是正确的List确实没有实现这个方法。
      

  10.   

    这就是个面向对象的多态。。 建议在看一遍JAVA基础书籍,关于继承多态的。。
      

  11.   

    这是多态,ArrayList实现了List接口里的方法,List list=new ArrayList();
    的意思是父类引用指向子类对象,这样父类的实例就可以访问子类里的方法了
      

  12.   

    List list=new ArrayList();
    上面变红的地方  new ArrayList()  里边有java封装好的方法   你可以去API边看看  就能深入了解啦!!
      

  13.   

    +1.
    其实你可以去看看它的原形。在JAVA包的:java.util.List
      

  14.   

    List list=new ArrayList();这是多态问题,父类的引用可以指向子类的引用,
    list 是一个接口,AraayList可以具体的实现这个接口,从而通过引用变量list来调用方法,你可以查一下API文档,
    public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable    这就是他们的关系