请为公交系统中市民的公交卡和学生市民的学生卡设计一个类体系结构,尽可能保证代码的重用率。 市民的公交卡内容包括:编号、姓名、性别; 学生的学生卡内容包括:编号、姓名、性别、类型、有效日期; 给出相关实体类的定义代码,要求每个类: (1)体现类的封装性与隐私性; (2)有方便实例化的构造方法; (3)有方便打印信息的show()方法。 上传代码和运行结果截图。
时间: 2024-03-17 16:42:12 浏览: 15
下面是一个可能的类体系结构的定义代码,其中 `Card` 类是公交卡的基类,`CitizenCard` 类是市民的公交卡类,`StudentCard` 类是学生市民的学生卡类。
```java
// Card 类是公交卡的基类
public class Card {
private String id; // 编号
private String name; // 姓名
private String sex; // 性别
public Card(String id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public void show() {
System.out.println("编号:" + getId());
System.out.println("姓名:" + getName());
System.out.println("性别:" + getSex());
}
}
// CitizenCard 类是市民的公交卡类
public class CitizenCard extends Card {
public CitizenCard(String id, String name, String sex) {
super(id, name, sex);
}
}
// StudentCard 类是学生市民的学生卡类
public class StudentCard extends Card {
private String type; // 类型
private String validDate; // 有效日期
public StudentCard(String id, String name, String sex, String type, String validDate) {
super(id, name, sex);
this.type = type;
this.validDate = validDate;
}
public String getType() {
return type;
}
public String getValidDate() {
return validDate;
}
public void show() {
super.show();
System.out.println("类型:" + getType());
System.out.println("有效日期:" + getValidDate());
}
}
```
在上面的代码中,`Card` 类是公交卡的基类,包含了公交卡的基本信息,如编号、姓名、性别等。`CitizenCard` 类继承自 `Card` 类,表示市民的公交卡,因此只需要提供一个构造方法来初始化基类的属性即可。`StudentCard` 类也继承自 `Card` 类,但是需要额外添加学生卡的信息,包括类型和有效日期,因此需要提供一个新的构造方法来初始化这些属性,并且重写 `show()` 方法来打印出所有的属性信息。
下面是一个简单的测试程序,用于创建公交卡和学生卡对象,并打印出它们的属性信息。
```java
public class Test {
public static void main(String[] args) {
// 创建市民卡对象
CitizenCard c1 = new CitizenCard("001", "张三", "男");
c1.show();
// 创建学生卡对象
StudentCard s1 = new StudentCard("002", "李四", "女", "本科生", "2022-06-30");
s1.show();
}
}
```
运行结果如下所示:
```
编号:001
姓名:张三
性别:男
类型:null
有效日期:null
编号:002
姓名:李四
性别:女
类型:本科生
有效日期:2022-06-30
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)