わかりました、私が見る限り、ここに 2 つの主な質問があります。
- メソッドをオーバーライドするとはどういう意味ですか?
- メソッドをオーバーライドするにはどうすればよいですか?
新しいクラスを考えましょう。そうすれば、私はあなたの宿題をしなくてすみます。
3 つの文字列を格納する Student というクラスがあります。
このように見えるかもしれません。
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 も追跡できればもっと良いと判断しました。1 つの解決策は、Student クラスを拡張することです。
クラスを拡張することで、Student が持っていたすべてのメソッド (およびコンストラクター) にアクセスできるようになり、独自のメソッドをいくつか追加できるようになります。それでは、新しいクラス CollegeStudent を呼び出して、studentId の文字列を追加してみましょう。
public class CollegeStudent extends Student{
String studentId;
}
これで、追加作業なしで、CollegeStudent を作成し、その ID を取得できます。
// Code
CollegeStudent myCollegeStudent = new CollegeStudent("Dennis", "Ritchie", "2.2");
String identity = myCollegeStudent.getIdentity();
// Code
わかりました、十分なセットアップです。あなたの質問に答えましょう。
したがって、"Ritchie, Dennis" を返す代わりに、その大学生の "studentId" を返す getIdentity() を好むと仮定しましょう。その後、getIdentity メソッドをオーバーライドできます。
メソッドをオーバーライドすることで、getIdentity() を書き直して、studentId を返すようにします。CollegeStudent クラスは次のようになります。
public class CollegeStudent extends Student{
String studentId;
@Override
public String getIdentity(){
return this.studentId;
}
}
メソッドをオーバーライドするには、同じタイプのオブジェクト (この例では String) を返す必要があり、同じパラメーターを受け入れる必要があります (この例ではパラメーターを受け入れませんでした)。
コンストラクターをオーバーライドすることもできます。
では、これはあなたの割り当てにどのように適用されますか? .equals()、.compareTo()、および .toString() は、拡張するクラス (Object など) のために既に定義されています。ただし、これらのメソッドを再定義またはオーバーライドして、クラスで役立つようにする必要があります。おそらく、 toString() の実装は、「IV」ではなく「4」という単語を返すでしょう。おそらくそうではありませんが、要点は、メソッドのコーディング方法を自由に決定できるようになったことです。
お役に立てれば。