论坛首页 Java企业应用论坛

接口,抽象类的使用

浏览 19276 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2008-11-21  
grandboy 写道
思想有时不太好表达。有的时候就是那种“只可以意会,不可言传”的感觉。还是就lz的代码谈, 如果我没有理解错的话,楼主的那个接口真是有点多余。其实只要一个抽象类里面再定义一个抽象方法就行了。不能为了接口而接口。代码如下:
public abstract class AbstractFileDataParser 
{  
    private FileInputStream fileInputStream = null;  
  
    public AbstractFileDataParser(FileInputStream fileInputStream)  
    {  
        if (fileInputStream == null)  
        {  
            throw new NullPointerException("file input stream is null!");  
        }  
        this.fileInputStream = fileInputStream;  
    }  
  
    protected FileInputStream getFileInputStream()  
    {  
        return this.fileInputStream;  
    }  
  
    public void release()  
    {  
        CloseUtil.close(fileInputStream);  
    }  
    
    abstract Object[] readData();  
}


然后在子类里就可以实现这个readData()方法。



同意不能为了接口而接口的说法。像兄台这样,把这个方法定义为抽象方法。然后用实现类去实现他,没有问题。但如果现在还有另外一个抽象类B,也定义了一个抽象方法,而刚才那个实现类,也需要实现抽象类B的抽象方法。应该就没办法写了,除非让这个抽象类B继承你的抽象类,这样实现类才可以实现这两个抽象方法。但如果把你的抽象类和抽象类B修改为借口,那么这两个接口之间不需要有任何关系,实现类就可以同时实现他们的抽象方法了。
0 请登录后投票
   发表时间:2008-11-21  
我的做法是,如果一个类就能实现功能的话,绝对不为其定义一个抽象类或者接口。如果以后有需求的话,在增加也来得及。如果是有多个实现的话,那么我一般定义为接口,如果这多个实现类有可以复用的方法时,就把这些提到一个抽象类中,让这个抽象类实现接口,然后所有的实现类继承这个抽象类。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics