用两个匿名内部类来实现抽象类。ALL_TAG和NULL_TAG是对象的引用,不是类。

解决方案 »

  1.   

    感觉楼上的有道理,那ALL_TAG就是匿名内部类对象的引用,作为Tag类的成员变量?
    那还有一点不明白的是,匿名内部类是怎么实现Tag抽象类的?虽然它们实现了intersect()和toTagSexp()两个抽象函数,但是其他成员函数和成员变量它们并没有定义,应该说这两个匿名内部类和Tag类还是有很大区别的吧?那ALL_TAG和NULL_TAG还能说是Tag类型的嘛?
      

  2.   

    我也不懂,问一下,ALL_TAG和NULL_TAG是不是两个变量?即对象
      

  3.   

    Tag类是抽象类,子类或者说实现类具体实现什么方法,都可以根据需要。
    没有定义的函数和成员变量也都继承下来了。因为Tag类是抽象类,所以没有办法直接实例化,所以“那ALL_TAG和NULL_TAG还能说是Tag类型的嘛?”这句话也就无从说起。//我也不懂,问一下,ALL_TAG和NULL_TAG是不是两个变量?即对象这两个是对象的引用变量,不是对象。
      

  4.   

    谢谢flyforlove大侠,有茅塞顿开的感觉!但还有一个问题,从类定义的代码里,你从哪里看出匿名的内部类实现了Tag抽象类?
      

  5.   

    这句话
    public static Tag ALL_TAG = new Tag() 这是类继承的一种写法其实相当于
    class TagTmp extends Tag{
      ......
    }public static Tag ALL_TAG = new TagTmp();以上是我的理解,仅代表个人观点。还有,不要叫我大侠,我只是个java流浪者,从来没有用java开发过项目。看看内部类那部分书,再回头看看这个问题。