好了,從我所看到的,你有2點主要的問題在這裏。
- 是什麼意思覆蓋的方法?
- 如何重寫一個方法?
讓我們想出一個新班級,這樣我就可以避免爲你做功課。
我們有一個名爲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;
}
}
你喜歡學生課,但是你認爲如果你能跟蹤一個大學生ID也會好很多。一種解決方案是擴展學生類。
通過擴展類,我們接觸的所有的學生有方法(和構造函數),我們得到添加一些我們自己的。 因此,讓我們打電話給我們的新班級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」對於大學生。你可以用覆蓋的getIdentity方法。
通過重寫的方法,你會得到重新寫的getIdentity(),使其返回studentId。 CollegeStudent班會看起來像這樣。
public class CollegeStudent extends Student{
String studentId;
@Override
public String getIdentity(){
return this.studentId;
}
}
要覆蓋一個方法,你必須返回同一類型的對象(在我們的例子字符串),你必須接受相同的參數(本例未接受任何參數)
你也可以覆蓋構造函數。
那麼這是如何適用於你的任務? .equals(),.compareTo()和.toString()已經定義,因爲您將擴展的類(如Object)。但是,您需要重新定義或覆蓋這些方法,以便它們對您的班級有用。也許你的執行toString()將返回單詞「四」而不是「IV」。可能不會,但重要的是您現在可以自由決定如何編碼該方法。
希望這會有所幫助。
覆蓋基本上意味着用您自己的方法替換定義方法的代碼...'@覆蓋' – JCOC611 2013-03-11 21:57:36
http://docs.oracle.com/javase/tutorial/java/IandI/override.html看看文檔 – 2013-03-11 21:58:31
迄今爲止,您諮詢了哪些書籍或文檔?如果他們不解釋什麼是覆蓋手段,它們必須非常糟糕...... – zeroflagL 2013-03-11 22:00:22