锁定老帖子 主题:接口,抽象类的使用
精华帖 (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修改为借口,那么这两个接口之间不需要有任何关系,实现类就可以同时实现他们的抽象方法了。 |
|
返回顶楼 | |
发表时间:2008-11-21
我的做法是,如果一个类就能实现功能的话,绝对不为其定义一个抽象类或者接口。如果以后有需求的话,在增加也来得及。如果是有多个实现的话,那么我一般定义为接口,如果这多个实现类有可以复用的方法时,就把这些提到一个抽象类中,让这个抽象类实现接口,然后所有的实现类继承这个抽象类。
|
|
返回顶楼 | |