如果一个类实现了一个接口,那接口的方法必须都实现吧,我一直这么认为,但是我在jdk中碰到了这个例子
   AbstractListModel类实现了ListModel接口,接口包括以下4个方法:
addListDataListener,removeListDataListener
getElementAt,getSize
AbstractListModel类实现了前两个方法,后两个方法继承而来,没有具体实现,可以参见jdk,这样也行么
   然后自己定义class DataModel extends AbstractListModel,发现前两个方法不用实现,而后两个方法必须实现,否则出错
   另外,AbstractListModel好像是抽象类
高手帮忙,谢谢!

解决方案 »

  1.   

    你的AbstractListModel类实现了ListModel接口的部分方法 所以AbstractListModel类是
    一个抽象类。
    当你用DataModel继承AbstractListModel类时如果不实现AbstractListModel中的抽象方法
    则它也是个抽象类。由于你的前2个方法在AbstractListModel类中已经实现 所以不会出错
    而后两个没有实现所以出错。
      

  2.   

    所谓抽象类就是有一个或多个抽象方法,抽象方法就是只有声明没有定义的方法
    接口其实是抽象类的一种,只不过它全是抽象方法而已
    AbstractListModel是抽象类,实现了ListModel,但由于它是抽象类,它可以有抽象方法,所以可以不用实现ListModel的另外两个抽象方法你自己的DataModel不是抽象类,继承了AbstractListModel之后就一定要实现它的所有抽象方法,不然也只能声明味abstract