題目描述

當一個子類別繼承自一個父類別的時候,子類別當然也會繼承到父類別的方法。然而,子類別也可以覆寫(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

解題概念

在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();
    }
}