題目描述
當一個子類別繼承自一個父類別的時候,子類別當然也會繼承到父類別的方法。然而,子類別也可以覆寫(override)父類別的方法。
請參考下面的Sports類別程式:
class Sports{
String getName(){
return "Generic Sports";
}
void getNumberOfTeamMembers(){
System.out.println( "Each team has n players in " + getName() );
}
}
接下來,我們會建立一個Soccer類別,繼承自Sports類別。我們可以覆寫getName方法,使其能回傳不同的字串。
class Soccer extends Sports{
@Override
String getName(){
return "Soccer Class";
}
}
當我們在覆寫一個方法的時候,可以加上「@Override」記號,如此一來便可以確保這個方法一定有覆寫到父類別的方法。
您在這題中必須要覆寫getNumberOfTeamMembers方法,接著在標準輸出串流中輸出「Each team has 11 players in Soccer Class」。
原題網址
輸出格式
執行時,您的程式應該要輸出以下內容:
Generic Sports
Each team has n players in Generic Sports
Soccer Class
Each team has 11 players in Soccer Class
Each team has n players in Generic Sports
Soccer Class
Each team has 11 players in Soccer Class
解題概念
在Soccer類別內撰寫getNumberOfTeamMembers方法,覆寫Sports類別的getNumberOfTeamMembers方法,可以加上「@Override」記號來確保覆寫成功。
參考答案
class Sports {
String getName() {
return "Generic Sports";
}
void getNumberOfTeamMembers() {
System.out.println("Each team has n players in " + getName());
}
}
class Soccer extends Sports {
@Override
String getName() {
return "Soccer Class";
}
@Override
void getNumberOfTeamMembers() {
System.out.println("Each team has 11 players in " + getName());
}
}
public class Solution {
public static void main(final String[] args) {
final Sports c1 = new Sports();
final Soccer c2 = new Soccer();
System.out.println(c1.getName());
c1.getNumberOfTeamMembers();
System.out.println(c2.getName());
c2.getNumberOfTeamMembers();
}
}