import java.util.*;
class TestMap
{
public static void main(String args[])
{
Map mp = new HashMap();
mp.put("1",new Integer(123));
    mp.put("2",new Integer(456));
    mp.put("3",new Integer(789));
    System.out.println(mp);

}

}
加红的地方为什么可以这样使用?可以说说多态吗?

解决方案 »

  1.   

    向上转型,楼主最好找本书看看,像thinking in java, core java 里面都讲的很清楚
      

  2.   

    Map是一个接口 是不能new的 ,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 
      

  3.   

    Map是接口,HashMap是Map接口的一个实现类,new HashMap()是HashMap的类型,Map mp转型成为了HashMap的类型。JAVA中的上溯造型,或者向上转型。
    因为向上转型后mp调用了HashMap中的方法,与Map中的无关;如果Map还有其他的实现类,就调用相应的其他类中的方法,Map mp 这个大的类型不用改变。体现了多态。
      

  4.   

    Map mp = new HashMap(); 
    相当于:
    人 makesi = new 马克思();“马克思”是“人”的一个派生类,“makesi”是“马克思”的一个实例。
      

  5.   

    Map mp = new HashMap(); 不是父类引用指向子类对象吗?上面的程序没有编译错误,可是有安全提示。
      

  6.   

    Map是一个接口,API里面已经说得很清楚了!
    是不能够直接创建对象的!
    多态实现指的是使用同一个实现接口,以实现不同的对象实例.
      
      

  7.   

    以map声明类型,用hashset实例化之,对象mp可以直接调用map里定义的方法而不关心实现,而实现必须要有人做,hashset就是这些方法的实现者。
      

  8.   

    因为你用的是JDK1.5以上的版本
      

  9.   

    自jdk1.5范型的概念引入以后,编译器是希望你能明确容器中的object类型的。
    可以试试:Map<String,Integer> mp = new HashMap<String,Integer>();