好的,据我所知,您在这里有两个主要问题。
- 重写方法是什么意思?
- 如何覆盖方法?
让我们想一个新的班级,这样我就可以避免为你做作业。
我们有一个名为 Student 的类,它存储 3 个字符串。
它可能看起来像这样。
public class Student {
String firstName;
String lastName;
String gpa
public Student(String firstName, String lastName, String gpa){
this.firstName = firstName;
this.lastName = lastName;
this.gpa = gpa;
}
// Perhaps some methods here
public String getIdentity(){
return this.lastName + ", " + this.firstName;
}
}
您喜欢 Student 课程,但您认为如果您也可以跟踪 College studentId 会更好。一种解决方案是扩展 Student 类。
通过扩展类,我们可以访问 Student 拥有的所有方法(和构造函数),并且可以添加一些我们自己的方法。因此,让我们调用我们的新类 CollegeStudent,并为 studentId 添加一个字符串。
public class CollegeStudent extends Student{
String studentId;
}
现在,无需额外工作,我就可以创建一个 CollegeStudent,并获得它的身份。
// Code
CollegeStudent myCollegeStudent = new CollegeStudent("Dennis", "Ritchie", "2.2");
String identity = myCollegeStudent.getIdentity();
// Code
好的,足够的设置。让我们回答你的问题。
因此,让我们假设您宁愿使用 getIdentity() 来返回该大学生的“studentId”,而不是返回“Ritchie, Dennis”。然后,您可以覆盖getIdentity 方法。
通过覆盖该方法,您将重新编写 getIdentity() 以便它返回 studentId。CollegeStudent 类看起来像这样。
public class CollegeStudent extends Student{
String studentId;
@Override
public String getIdentity(){
return this.studentId;
}
}
要覆盖一个方法,你必须返回相同类型的对象(在我们的例子中是String),并且你必须接受相同的参数(我们的例子没有接受任何参数)
您还可以覆盖构造函数。
那么这如何适用于你的任务呢?.equals()、.compareTo() 和 .toString() 已经定义,因为您将要扩展的类(例如 Object)。但是,您将需要重新定义或覆盖这些方法,以便它们对您的类有用。也许您的 toString() 实现将返回单词“four”而不是“IV”。可能不会,但关键是您现在可以自由决定应该如何编码该方法。
希望这可以帮助。