请为公交系统中市民的公交卡和学生市民的学生卡设计一个类体系结构,尽可能保证代码的重用率。 市民的公交卡内容包括:编号、姓名、性别; 学生的学生卡内容包括:编号、姓名、性别、类型、有效日期; 给出相关实体类的定义代码,要求每个类: (1)体现类的封装性与隐私性; (2)有方便实例化的构造方法; (3)有方便打印信息的show()方法。(java)
时间: 2024-03-24 13:40:32 浏览: 88
根据题目的要求,我们可以设计出两个类:`CitizenCard`和`StudentCard`,其中`CitizenCard`是所有市民卡的基类,包含编号、姓名和性别等公共属性,`StudentCard`则是`CitizenCard`的子类,增加了类型和有效日期等属性。
以下是Java代码实现:
```java
public class CitizenCard {
private String id; // 编号
private String name; // 姓名
private String gender; // 性别
// 构造方法
public CitizenCard(String id, String name, String gender) {
this.id = id;
this.name = name;
this.gender = gender;
}
// show方法
public void show() {
System.out.println("编号:" + id);
System.out.println("姓名:" + name);
System.out.println("性别:" + gender);
}
}
public class StudentCard extends CitizenCard {
private String type; // 类型
private String validDate; // 有效日期
// 构造方法
public StudentCard(String id, String name, String gender, String type, String validDate) {
super(id, name, gender);
this.type = type;
this.validDate = validDate;
}
// show方法
public void show() {
super.show(); // 调用父类show方法
System.out.println("类型:" + type);
System.out.println("有效日期:" + validDate);
}
}
```
在上述代码中,`CitizenCard`类中的属性为`private`,并提供了一个构造方法和一个`show`方法;`StudentCard`类继承了`CitizenCard`类,同时增加了类型和有效日期两个属性,并重写了`show`方法,同时通过调用父类的`show`方法来显示基类中的属性。这样设计可以有效地保证了代码的重用率和可读性,同时也保证了类的封装性和隐私性。