java4.使用JDK中的接口。对继承多态作业1中的学生类(Student)进行扩展,重写方法toString,equal;实现接口Comparable,按照学号大小进行比较;定义构造方法。并在测试中使用Arrays.sort方法对一个学生对象数组进行排序,体会多态。
时间: 2024-02-16 17:59:37 浏览: 95
好的,以下是一个可能的实现。假设我们已经在继承多态作业1中定义了一个Student类,现在我们需要对其进行扩展。
首先,我们需要重写toString()和equals()方法,以便更好地表示和比较学生对象:
```java
public class Student implements Comparable<Student> {
private String name;
private int id;
private int grade;
// 构造方法
public Student(String name, int id, int grade) {
this.name = name;
this.id = id;
this.grade = grade;
}
// 重写toString方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
", grade=" + grade +
'}';
}
// 重写equals方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id &&
grade == student.grade &&
Objects.equals(name, student.name);
}
// 实现Comparable接口
@Override
public int compareTo(Student o) {
return this.id - o.id;
}
}
```
我们在这里实现了Comparable接口,并实现了compareTo()方法,使得我们可以比较两个学生对象的大小。我们在这里按照学号大小进行比较。
接下来,我们可以在测试中创建一个学生对象数组,并使用Arrays.sort()方法对其进行排序:
```java
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Student[] students = {
new Student("Alice", 1001, 80),
new Student("Bob", 1003, 70),
new Student("Charlie", 1002, 90)
};
// 排序前输出
System.out.println("排序前:");
for (Student s : students) {
System.out.println(s);
}
// 排序
Arrays.sort(students);
// 排序后输出
System.out.println("排序后:");
for (Student s : students) {
System.out.println(s);
}
}
}
```
在这个测试中,我们创建了一个包含三个学生对象的数组,并对其进行了排序。在输出中,我们可以看到学生对象已按照学号进行了排序。
通过这个例子,我们可以看到多态的优势。我们可以将不同类型的学生对象放在同一个数组中,并使用同样的方法对其进行排序。这种灵活性使得我们的代码更加容易扩展和维护。
阅读全文