编写一个泛型类Student,该类中有两个私有属性,分别表示用户身份标识和姓名。两个属性都是泛型。同时,编写几个身份标识的类,比如身份证类,学生证类,学校饭卡类,这些类中最好有构造方法及重写toString方法。在测试类中使用这些标识类作为泛型的具体数据类型,进行测试。
时间: 2024-11-24 17:42:43 浏览: 7
java代码-定义一个学生类,使用LinkedList对学生类进行管理,执行添加操作,并打印数据
好的,首先我们创建一个名为`Student<T>`的泛型类,其中包含用户的标识符和姓名:
```java
public class Student<T> {
private T id;
private String name;
public Student(T id, String name) {
this.id = id;
this.name = name;
}
// 泛型版本的getter和setter方法
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
```
接下来,我们会创建一些具体的标识符类作为`T`类型的实例,例如身份证、学生证和学校饭卡:
```java
// 身份证类
class IDCard implements Serializable {
private String number;
public IDCard(String number) {
this.number = number;
}
// 构造方法和toString方法省略
// 省略了equals(), hashCode等方法...
}
// 学生证类
class StudentID extends IDCard {
public StudentID(String number, String studentNumber) {
super(number);
// 添加学生学号字段...
}
// toString方法省略
}
// 饭卡类
class SchoolMealCard {
private String cardNumber;
public SchoolMealCard(String cardNumber) {
this.cardNumber = cardNumber;
}
// 构造方法和toString方法省略
}
```
最后,在测试类`Test`中,我们可以这样使用这些泛型类型:
```java
public class Test {
public static void main(String[] args) {
// 使用身份证
Student<IDCard> student1 = new Student<>(new IDCard("1234567890"), "张三");
System.out.println(student1); // 输出Student{id=IDCard{number='1234567890'}, name='张三'}
// 使用学生证
Student<StudentID> student2 = new Student<>(new StudentID("1234567890", "20220101"), "李四");
System.out.println(student2); // 输出Student{id=StudentID{id='1234567890', studentNumber='20220101'}, name='李四'}
// 使用饭卡
Student<SchoolMealCard> student3 = new Student<>(new SchoolMealCard("9876543210"), "王五");
System.out.println(student3); // 输出Student{id=SchoolMealCard{cardNumber='9876543210'}, name='王五'}
}
}
```
阅读全文