譬如: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()方法
}
};
而不用
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()方法
}
};
List getList(boolean isSync) {
if (isSync) {
List l=new Vector();
return l;
} else {
List l=new ArrayList();
return l;
}
}
如果需要使用ArrayList拥有而List不具备的的方法(),那就不宜这么写。
如果该list只是在局部使用,那两种写法差别不大。
List list=new ArrayList();这个时候不能调用ArrayList的专有方法。
ArrayList arl=new ArrayList();可以调用ArrayList的所有方法。
上一句的好处就在于:当你以后想把List list=new ArrayList();改成List list=new LinkedList();的时候,剩下的代码均不要改动。而下一句就悲剧了...代码中调用到ArrayList专有方法的句子都要改掉!