譬如:List list=new ArrayList();
而不用
ArrayList arl=new ArrayList();
等等等等…
求大虾,不要理论,给段代码看好处。谢谢。跟这个多态作用应该不一样吧?class A{ // 定义类A
public void fun1(){ // 定义fun1()方法
System.out.println("A --> public void fun1(){}") ;
}
public void fun2(){
this.fun1() ; // 调用fun1()方法
}
};
class B extends A{
public void fun1(){ // 此方法被子类覆写了
System.out.println("B --> public void fun1(){}") ;
}
public void fun3(){
System.out.println("B --> public void fun3(){}") ;
}
};
class C extends A{
public void fun1(){ // 此方法被子类覆写了
System.out.println("C --> public void fun1(){}") ;
}
public void fun5(){
System.out.println("C --> public void fun5(){}") ;
}
};
public class PolDemo05{
public static void main(String asrgs[]){
fun(new B()) ; // 传递B的实例
fun(new C()) ; // 传递B的实例
}
public static void fun(A a){
a.fun1() ; // 调用覆写父类中的fun1()方法
}
};

解决方案 »

  1.   

    List list=new ArrayList()在很多情况下更好一方面,如果未来要将list改为非ArrayList的另外一种List,只需要修改一个地方。另一方面,有时候它能提供更大的灵活性。如下面这段代码可以根据是否需要同步返回不同的list
    List getList(boolean isSync) {
      if (isSync) {
        List l=new Vector();
        return l;
      } else {
        List l=new ArrayList();
        return l;
      }
    }
    如果需要使用ArrayList拥有而List不具备的的方法(),那就不宜这么写。
    如果该list只是在局部使用,那两种写法差别不大。
      

  2.   

    List有ArrayList,LinkedList等等。
    List list=new ArrayList();这个时候不能调用ArrayList的专有方法。
    ArrayList arl=new ArrayList();可以调用ArrayList的所有方法。
    上一句的好处就在于:当你以后想把List list=new ArrayList();改成List list=new LinkedList();的时候,剩下的代码均不要改动。而下一句就悲剧了...代码中调用到ArrayList专有方法的句子都要改掉!
      

  3.   

    应该是这样的。List list=new ArrayList();更灵活