package com;import java.util.*;
public class CollectionOp2 {
private static String str[]={"one","two","three","four","five"}; /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection c=new ArrayList();//ArrayList c=new ArrayList;?
for(int i=0;i<str.length;i++)
if(c.add(str[i]))
System.out.println("adding\""+str[i]+"\"");
if(c.remove(str[0]))
System.out.println("removing\""+str[0]+"\"");
System.out.println("Collection:"+c);
System.out.println("Collection's size:"+c.size());
System.out.println("Is Collection empty?"+c.isEmpty());
System.out.println("Dose collection contain"+str[0]+"?"+c.contains(str[0]));
System.out.println("Dose collection contain"+str[1]+"?"+c.contains(str[1]));
}}
Collection c=new ArrayList();
ArrayList c=new ArrayList;
我想问的问题就是上面的两行有什么区别?在书本这样定义的Collection c=new ArrayList();
但我可以像这样定义ArrayList c=new ArrayList;Collection  ArrayList 這兩個都是类吗?
ArrayList  是Collection子类吗?
高手请教,谢谢。

解决方案 »

  1.   

    Collection是层次结构中的根接口,而ArrayList是一个已实现Collection的类
      

  2.   

    Collection是接口 ArrayList类实现了Collection接口的类.
    在java中可以将实现了接口的类的引用赋值给接口的.
    这两种赋值还是有区别的,
    Collection c=new ArrayList();
    引用c只能引用Collection中的方法和ArrayList类中方法的交集.(实例方法实际上调用的还是ArrayList中的方法)
    这种方式主要用于多态中使用.
    ArrayList c=new ArrayList;
    就是一般的了,没有什么可以说的,当然ArrayList中的所有方法都可见.
    你看看多态方法的文章就明白了,其实还有很多细节上的问题没说
    比如什么时候是采用动态绑定,什么时候是静态绑定.