为什么这里用的是abstract class ,原理是什么,为什么要这样设计,如果这样设计接下来又怎么使用?
public abstract class BaseHibernateObjectDao
extends HibernateDaoSupportimplements BaseObjectDao {
......
}
问题补充:
我之前自己的写法是
public class BaseHibernateObjectDao
extends HibernateDaoSupportimplements BaseObjectDao {
......
}
然后每个实体dao extends BaseHibernateObjectDao ,那么BaseHibernateObjectDao中的方法实现就会被其它的实体Dao所拥有,而每个实体dao自己的部分可以实现自己的dao接口.那和前面的abstract class有什么不同?
[quote]那和前面的abstract class有什么不同[/quote]
不同就在于你写的BaseHibernateObjectDao也可以new出来 被别人使用
你自己写代码可能看不出来不同 因为你铁定不会去用BaseHibernateObjectDao
但是如果分工是你写dao,别人写biz
那说不定别人就会去用BaseHibernateObjectDao了,而这不是你希望的
大家都是新人,自己写底层类给别人去用的机会少
但是你可以看看java的类库 比如集合类java.util.AbstractCollection
你只能用现成的HashMap Hashset LinkedList之类
但是拥有他们共有方法的AbstractCollection你就用不了
首先这里面可能有未实现的方法 也可能里面的方法根本不够用的
加上了Abstract就不会让不知情的人瞎用
另外有天你觉得HashMap Hashset LinkedList都TMD垃圾
自己想写一个集合类 你可以直接继承AbstractCollection 省力得多
说了这么多 这个问题必须是多人开发才能看出优点 你自己一个人写 当然不明白了
我不知道你看的哪的源码
abstract class你含义你不理解么?
就是想做一个公共的基类
比如说 我有5个dao
这5个dao中有2个方法完全相同
于是把这2个方法放到父类中
但是这个父类只是个半成品 于是加上abstract叫人不要用
abstract class 是抽象类
抽象的意思是, 把众多类的相同部分提取出来 ;
抽象类是吧 相关的众多类的相同部分提取出来 单独作为一个类。
然后其他不同的类 先继承抽象类 然后在写属于自己的特殊方法。
比如吧 人 作为一个抽象类
然后用 男人去继承人类 女人去继承人类,
男人 与 女人 自己在写属于自己的特殊方法
举个鲜明的例子:
这些特殊方法,男人可以是 有一个“遗精方法” 女人有一个“大姨妈”方法
但是男人与女人所继承的 抽象类--人类 是相同的(都有手有脚,有眼有鼻)