用Java设计一个学生信息读取器可以展示学生的学号和名字,采用面向抽象编程和面向接口的编程实现。其中:除了主类外,还有学生类Student和三类学生,即本科生(Undergraduate)、硕士生(Master Degree Candidate)和博士生(Doctoral Candidate),以及的学生信息读取器StuInfoReader和大学(University)。其中:大学负责学生相关信息的设定。
时间: 2023-12-03 15:42:45 浏览: 28
以下是Java代码实现:
首先是学生类Student,这是一个抽象类,其中定义了学号和名字两个属性及对应的getter和setter方法。
```
public abstract class Student {
private String studentId;
private String name;
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
然后是三类学生,分别继承自学生类Student,并根据需求进行相应的属性设定。这里只展示了本科生的代码。
```
public class Undergraduate extends Student {
private String major;
private int grade;
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
```
接下来是面向接口的学生信息读取器StuInfoReader,它定义了读取学生信息的方法getStudentInfo,需要传入一个学生对象作为参数,并返回学生的学号和名字。
```
public interface StuInfoReader {
String getStudentInfo(Student student);
}
```
然后是面向抽象编程的大学类University,它实现了StuInfoReader接口,并根据不同类型的学生返回不同格式的学生信息。此外,还有一个方法setStudentInfo用于设定学生信息。
```
public class University implements StuInfoReader {
private List<Student> students = new ArrayList<>();
public void setStudentInfo(Student student) {
students.add(student);
}
@Override
public String getStudentInfo(Student student) {
if (student instanceof Undergraduate) {
return "Undergraduate: " + student.getStudentId() + " " + student.getName();
} else if (student instanceof MasterDegreeCandidate) {
return "Master Degree Candidate: " + student.getStudentId() + " " + student.getName();
} else if (student instanceof DoctoralCandidate) {
return "Doctoral Candidate: " + student.getStudentId() + " " + student.getName();
} else {
return "Unknown student type";
}
}
}
```
最后是主类Main,用于测试学生信息读取器的实现。
```
public class Main {
public static void main(String[] args) {
University university = new University();
Undergraduate undergraduate = new Undergraduate();
undergraduate.setStudentId("001");
undergraduate.setName("Tom");
undergraduate.setMajor("Computer Science");
undergraduate.setGrade(3);
university.setStudentInfo(undergraduate);
System.out.println(university.getStudentInfo(undergraduate));
}
}
```