? 这里需要注意的是Date对象是java.util.Date,不要和java.sql.Date混淆。 (2)实现接口IUser的抽象类AbstractUser
每一个具体用户类(学生、老师)都要实现一遍接口IUser中定义的方法,而这些方法的代码都是一样的,所以我们用一个抽象类AbstractUser来统一实现IUser接口中的公共属性,我们把这种抽象类称之为“默认实现抽象类”。AbstractUser不仅提供了方法的实现,也提供了属性变量的定义,所有的用户子类都将继承并拥有这些属性。 AbstractUser类的具体代码如下: package cn.com.chengang.sms.model; import java.util.Date;
abstract class AbstractUser implements IUser { private Long id; //数据库ID private String userId; //用户名 private String password; //密码 private String name; //姓名
private Date latestOnline;//最后登录时间
/********以下为接口IUser的实现方法***********/ public Long getId() { return id; }
public void setId(Long id) {
this.id = id; }
public String getUserId() { return userId; }
public void setUserId(String userId) { this.userId = userId; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Date getLatestOnline() { return latestOnline; }
public void setLatestOnline(Date latestOnline) { this.latestOnline = latestOnline; } }
(3)学生类Student
学生类Student继承自抽象类AbstractUser,所以也拥有了抽象类中所有的属性和方法,因此这里只需定义学生类独有的属性和方法。 package cn.com.chengang.sms.model;
public class Student extends AbstractUser {
//学生所属班级,为了避免和类(class)的名称混淆,将其命名为SchoolClass private SchoolClass schoolclass; /**
* 得到学生所在班级 */
public SchoolClass getSchoolclass() { return schoolclass; } /**
* 设置学生所在班级 */
public void setSchoolclass(SchoolClass schoolclass) { this.schoolclass = schoolclass; } }
(4)老师类Teacher
package cn.com.chengang.sms.model; import java.util.HashSet; import java.util.Set;
public class Teacher extends AbstractUser { private Set courses = new HashSet(); //所教课程 /**
* 得到所有课程 */
public Set getCourses() { return courses; } /**
* 设置一批课程 */
public void setCourses(Set courses) { this.courses = courses; }