什么是继承?
【Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属
性和行为,并能扩展新的能力。】百度百科上是这样定义的。在实践过程中应用继承,我们大脑中首先会闪现出这样
几个词:即抽象、提取、封装、拓展。连词造句概括出什么是继承?继承就是把公共部分提出出来封装到一个单独的
类中作为父类进行维护,然后其他继承这个父类的子类就可以直接享有父类中所有的“财产”并可以填充自己的特有
成分。俗话说:实践出真知,结合一个真实场景来应用一下。
就拿教师和学生来讲,都会有一份自己的档案记录。简单提取几个信息,教师都有编号、姓名、性别、年龄、职
级等等,学生有学号、姓名、性别、年龄、宿舍号等等。。此时维护教师和学生的信息,我们就可以将这些公共信息
提取出来单独维护。抽象出一张基类:用户,让教师类和学生类来分别继承这个基类。见下面UML图:
什么是单表继承?
单表继承,即整个继承体系都用一张表。也就是说子类所使用的表与父类相同,共享一张表。如下表t_user表:
或许你已经注意到上表中多了一个字段:type。因为类继承树是对应多个类的。要把多个类的信息在一张表中进
行维护,必须有种机制来区分哪些记录是属于哪个类的,type即鉴别字段,用它的值来进行区分。这里type=T表示为
教师类,type=S表示为学生类。但是type字段不存在对应的映射类属性,它需要在配置文件中进行单独配置。在数据
存储的时候hibernate会自动存储,在加载的时候会根据鉴别值取得相关的对象。这里在后面源码中会进行介绍。
下面来看一下在程序中的实现。构建基类user类: