抽象类是100%绝对肯定不能实例化的.Set是抽象的,但你可以用下例:
  Set set = new HashSet();
不知你能否得到一点启发.

解决方案 »

  1.   

    JBuilder里却可以随便使用象Image,Graphics等等的abstract类事先已经用他的子类实例化了我从Image继承一个类,还保持抽象类,就不能实例化去掉abstract,并实现从父类继承来的abstract的方法
      

  2.   

    大哥.
    有个依赖倒转原则听说过吗?
    它说的是:要依赖抽象,不要依赖于具体/
    你随便注意一下,就可以看到/
    就像helpall说的一样
    Set set = new HashSet();  
    Collection col=new ArrayList();
    -->为什么要这样呢?因为这样更通用了/我可以很容易把col变成Vector,变成List
    包括你提到的Image等/
    还有个重要概念:变量有静态类型和真实类型.
    上面的set的静态类型是Set,真实类型是HashSet.
      

  3.   

    这个嘛,是多态(polymophism)的典型表现。
    可以被实例化的是抽象类的某个具体子类。
    子类对象被向上转型(upcast)为父类的类型。
    所以看上去像是有了一个实例化的父类对象。
      

  4.   

    涨见识。
    //
    JBuilder里却可以随便使用象Image,Graphics等等的abstract类
    事先已经用他的子类实例化了
    //
    不过还是有点不明白,既然用它的子类实例化,那么:
    Image img=new java.awt.Toolkit.getDefaultToolkit().createImage("pic.jpg");
    语句中img是Image的哪个子类的对象呢?
      

  5.   

    其实,很多时候你不必搞明白到底某个接口或抽象类的对象是他的哪个子类的对象。
    这个子类很有可能是一个内隐类(inner class),甚至有可能是一个匿名类,你都无从知道其具体类型,只知道他继承或实现了抽象类或接口。
    java有一套运行时类型检查系统(RTTI:RunTime Type Identification),你不用操心这个问题。
      

  6.   

    abstract类是不能实例化啊,所以不能用new Image();
    但没说子类不能向父类转换啊
      

  7.   

    mouseleeky(守夜人) :
    谢谢你的解答. 有时候真觉得就象物理中的测不准定理一样,你越要搞得很清楚,反而会越糊涂. 进入一个森林(java)中,如果仔细研究每棵树(class),反而不知道森林长得是什么样了,当然,如果一棵树都不知道,说是精通森林,也是不可能的.关键是掌握这个度, 难啊!
      

  8.   

    to 搂主:
    “java说abstract类是不能实例化的,可是JBuilder里却可以随便使用象Image,Graphics等等的abstract类。而我从Image继承一个类,还保持抽象类,就不能实例化。为什么呢?

     你自己都承认了继承来的这个类还是个抽象类,既然是个抽象类,你怎么可以去实例化它呢。如前面极为仁兄说的,要想实例化它,就先它不再是抽象类。
      

  9.   

    对于abstract类来说,其用途在对象工厂中表现得非常露骨:
    可以参考:
    http://expert.csdn.net/Expert/topic/1834/1834814.xml?temp=.1347162关键字:对象替换,对象工厂
      

  10.   

    Set set = new HashSet();用OOP的思想来说是:
    Set是动物,HashSet是你,动物是抽象的,你是实例化过的动物,就是人,人是动物的子类,
    所以可以这个等式是成立的。