看到好多地方都是接口声明,子类创建
比如Collection c1=new ArrayList();
Collection c2=new Vector();
这应该是体现了多态
但是c1和c2都只有Collection里的方法,ArrayList和Vector自己的方法都用不了
所以一般什么时候用上面这种方法声明对象?

解决方案 »

  1.   

    List l1 = new ArrayList();
    我们需要的就是List的功能,而不是关注ArrayList,所以用List生命。这个才是常用的,你那个基本上没人用。
      

  2.   

    当你不需要使用子类的方法的时候一个接口的变量可以让你的代码更清爽,也更容易理解你的意图接口更常用的情况是方法接受一个接口类型的参数或者返回一个接口类型的返回值。可以参见Collection 几个实现的add方法
      

  3.   

    一般接口和方法的参数会要求List 而不会是ArrayList
      

  4.   

    举个简单的例子说说,假设你有一个人类,然后是学生,工人,农民等都是类人的子类,他们有各自的打印自身信息的方法print,这个时候就可以用楼主所说的申明方法来new对象,这样做的好处是,假设你有一个方法info,传入一个人类或子类的对象,来打印该对象自身的信息,那么你只需要人作为参数,在info方法内来调用对象的print方法, 而不用考虑是那个对象。如果不用这种申明方法的话,你就得写n个重载的方法info。但是用了多态后,你不就只用一个info方法吗?不知道我说清楚了没?