|
此文章由 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)仍旧是有效的.
所以我感到疑惑. 不知道最初说的那两句的区别和用途到底是什么样子的
希望大大们耐心帮我讲解下 |
|