Advertisement
Advertisement

新足迹

 找回密码
 注册
新足迹 门户 IT专业论坛 查看内容

关于接口和向上转型 java

2011-4-4 17:10| 发布者: wishmaster03 | 查看: 1406| 原文链接

新手~ 想问一下关于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)仍旧是有效的.

所以我感到疑惑. 不知道最初说的那两句的区别和用途到底是什么样子的

希望大大们耐心帮我讲解下
Advertisement
Advertisement


Advertisement
Advertisement
返回顶部