黑马程序员技术交流社区

标题: 对于Map和HashMap不懂 [打印本页]

作者: yang_zhi_xiang    时间: 2015-1-26 19:26
标题: 对于Map和HashMap不懂
Map是接口,而HashMap是类,怎么能写成Map map = HashMap();这到底什么意思
作者: yang_zhi_xiang    时间: 2015-1-26 19:27
写错了,是Map map = new HashMap();
作者: mengxiang1993    时间: 2015-1-26 19:42
这个是父类引用指向子类对象,是多态,建议楼主看下多态。以后会经常碰到,这样写的好处就是,比如你以后的容器变化,例如变成TreeMap,只需要将代码改成Map map=new TreeMap();是不是很方便啊。
作者: 浅木头    时间: 2015-1-26 19:56
Map map = new HashMap();
这个代码的右边才是真正创建的实例的类型,左边只是表示这个map变量的引用类型,虽然看起来是Map的,但实际上还是HashMap的。
作者: d7142947    时间: 2015-1-26 23:52
多态  父类引用子类对象
比如
  1. class Fu{
  2. ............
  3. }
  4. class Zi extend Fu{
  5. ................
  6. }
复制代码


这样实例化子类的时候可以写成
Zi z = new Zi();
或者多态写成  Fu z = new Zi();   即用父类引用指向子类对象,实际上还是实例化的子类对象
作者: 木羊    时间: 2015-1-27 00:36
d7142947 发表于 2015-1-26 23:52
多态  父类引用子类对象
比如

那么调用方法是用的谁的方法?
作者: 以利亚    时间: 2015-1-27 10:43
这是多态的特点
作者: 潇洒小哥    时间: 2015-1-27 16:07
这是多态,HashMap类实现了Map接口,Map就可以引用HashMap实例对象
作者: Jaybor    时间: 2015-1-27 17:09
多态的说,毕竟HashMap实现了Map接口
作者: d7142947    时间: 2015-1-27 21:33
木羊 发表于 2015-1-27 00:36
那么调用方法是用的谁的方法?

编译的时候看父类的    运行的时候看子类的,也就是调用子类的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2