| 
 
 | 
此文章由 wishmaster03 原创或转贴,不代表本站立场和观点,版权归  oursteps.com.au 和作者 wishmaster03 所有!转贴必须注明作者、出处和本声明,并保持内容完整  
新手~ 想问一下关于java中的接口和向上转型 
 
例如 List list = new ArrayList(); 
和 ArrayList arrayList = new ArrayList(); 
 
这两句话第一句是创建ArrayList对象并耦合到List接口使实例"list"成为对接口List通用的对象, 因此list只含有List和ArrayList中的通用方法而不再具有ArrayList中区别List的方法 
第二句是建立ArrayList对象, 包含所有ArrayList方法 
 
那么我想问的问题是, 用第一句时既然ArrayList()已经向上转型成为List了, 那ArrayList()本身的方法存在的意义是什么? 
还是说如果牵扯到比较复杂的接口编程, 需要创建ArrayList对象, 例如l, l可以对和list非通用的属性进行编辑, 而后建立一个引用 List lList = l; 来对通用接口进行编辑呢? 
 
另外我注意到, 让一个方法要求一个接口对象时, 即使我创建的对象没用声明为接口类型, 而只是implements了接口, 那么参数传递进去时会自动upcasting到所需的接口. 
例如 interface inter 
{ 
.... 
} 
 
class cl implements inter 
{ 
... 
} 
 
public static void abc(inter i) 
{ 
... 
} 
 
public static void main 
{ 
cl c = new cl(); 
abc(c); 
} 
 
这里abc(c)仍旧是有效的. 
 
所以我感到疑惑. 不知道最初说的那两句的区别和用途到底是什么样子的 
 
希望大大们耐心帮我讲解下 |   
 
 
 
 |