本帖最后由 吴愿涛 于 2012-11-1 21:57 编辑
静态的多态:方法名相同,参数个数或类型不相同。(overloading)
动态的多态:子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法
实现接口的实例传与接口的引用调用的实现类的方法。
希望楼主通过以下代码可以看明白:
Collection<Integer> list = new ArrayList<Integer>();
Collection<Integer> set = new HashSet<Integer>();
for(int i=0;i<5;i++){
list.add(i);
list.add(i);
set.add(i);
set.add(i);
}
System.out.println("list的大小为:"+list.size());
for(Integer i: list){
System.out.println(i);
}
System.out.println("set的大小为:"+set.size());
for(Integer i: set){
System.out.println(i);
}
同样是Collection的实现类,同样调用add(Object o)方法,但是最终的表现却不同
list中被添加了10个元素,而set中只有5个元素
以上的表现就是多态,原因:
二者虽然都属于java.util.Collection接口的实现类
但是list所对应的是一个ArrayList,它可以添加重复元素
而set所对应的是一个HashSet,它无法添加重复元素
|