A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NO? 中级黑马   /  2014-4-7 16:20  /  815 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
public class Test{  
public static void main(String[] args){  
Map<String,String> map = new HashMap<String,String>();
map.put("01","黑马程序员——张三");
map.put("02","黑马程序员——李四");
map.put("03","黑马程序员——王五");
map.put("04","黑马程序员——赵六");
Set<String> keySet = map.keySet();//这里的为什么可以用SET接收。而且奇怪的是SET不是一个接口吗?
//借口不是不能够创建实例对象吗?

for(Iterator<String> iter = keySet.iterator();iter.hasNext();){
String key = iter.next();
String value = map.get(iter.next());
sop("key:"+key+"...value:"+value);
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}

4 个回复

正序浏览
首先你要明白一个概念叫做:面向接口编程
在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
“Set<String> keySet = map.keySet();//这里的为什么可以用SET接收。而且奇怪的是SET不是一个接口吗?”
  在这里不光是因为面向接口编程的提倡,map.keySet()方法本身定义的时候返回的就是Set,注意看API说明“Returns: a set view of the keys contained in this map
回复 使用道具 举报
NO? 发表于 2014-4-7 19:00
兄弟你没明白我的意思,我是说为什么要这么做,不是说可不可以,用父类去接受子类对象这样不是让子类少了 ...

貌似你又问了一个新问题

多态
在以后考虑程序扩展性的时候 才能体现.
毕老师那个主板例子 我觉得就相当的好
父类作为参数传递,可以接受任意子类....
代码都不需要修改的,扩展性相当强
回复 使用道具 举报
osully 发表于 2014-4-7 18:24
父类引用指向子类对象 不可以吗???

另外 注意 迭代时 不要写两个next()

兄弟你没明白我的意思,我是说为什么要这么做,不是说可不可以,用父类去接受子类对象这样不是让子类少了很多自己的特有的方法吗?为什么要这么做?而且老师也提倡这么做?
回复 使用道具 举报
父类引用指向子类对象 不可以吗???

另外 注意 迭代时 不要写两个next()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马