0

スーパークラスのメソッドをオーバーライドすることにちょっと混乱しています。太字になっているこの問題を解決するのを手伝ってくれる人はいますか? 「basketball」のメイン メソッドで「say」メソッドを呼び出す方法がよくわかりません。

バスケットボールのチームには 12 人の選手がいます。各プレーヤーは、センター、ガード、フォワードの 3 つのタイプのいずれかです。

チームにはセンターが 4 人、フォワードが 4 人、ガードが 4 人います。

各プレイヤーには固有の名前と固有の番号があります。

基本クラス Player を定義します。Player クラスには、name メンバーである文字列と、number メンバーである整数があります。

Player クラスから Center クラス、Guard クラス、Forward クラスを派生させます。

基本クラスと派生クラスの適切なコンストラクター、アクセサー、およびミューテーターを定義します。

基本クラスのメソッドを定義します。Saysはプレイヤーの名前と番号を表示します

派生クラスで基本クラスの Say メソッドをオーバーライドします。派生クラスの Say は、プレイヤーの位置を表示し、基本クラス Say を呼び出します。基本クラス Say と派生クラス Says を合わせて、プレーヤーの名前、番号、およびタイプを表示します。

public class Player
{
    protected String firstName;
    protected String lastName;
    protected int num;

    public Player(String first, String last, int jerseyNum)
    {
        firstName = first;
        lastName = last;
        num = jerseyNum;
    }

    public void setFirstName(String first)
    {
        firstName = first;

    }

    public String getFirstName()
    {
        return firstName;
    }

    public void setLastName(String last)
    {
        lastName = last;
    }

    public String getLastName()
    {
        return lastName;
    }

    public void setNum(int jerseyNum)
    {
        num = jerseyNum;
    }

    public int getNum()
    {
        return num;
    }

    public void say()
    {
        System.out.printf("The player's name is %s %s and his jersey number is %d.\n", firstName, lastName, num);

    }
}

public class Center extends Player
{
    private String center;

    public Center(String first, String last, int num, String position)
    {
        super(first, last, num);
        center = position;
    }

    public void setPosition(String position)
    {
        center = position;
    }

    public String getPosition()
    {
        return center;
    }

    @Override
    public void say()
    {
        System.out.printf("This player plays the %s position", center);
    }
}


public class Forward extends Player
{
    private String forward;

    public Forward(String first, String last, int num, String position)
    {
        super(first, last, num);
        forward = position;
    }

    public void setPosition(String position)
    {
        forward = position;
    }

    public String getPosition()
    {
        return forward;
    }

    @Override
    public void say()
    {
        System.out.printf("This player plays the %s position", forward);
    }
}   



public class Guard extends Player
{
    private String guard;

    public Guard(String first, String last, int num, String position)
    {
        super(first, last, num);
        guard = position;
    }

    public void setPosition(String position)
    {
        guard = position;
    }

    public String getPosition()
    {
        return guard;
    }

    @Override
    public void say()
    {
        System.out.printf("This player plays the %s position", guard);
    }
}
public class basketball
{
    public static void main(String[] Args)
    {
        //Player bballPlayer =  new Player("Jon", "Jones", 25);
        Center positionCenter = new Center("Jon", "Jones", 25, "Center");

        positionCenter.say();
    }
}
4

2 に答える 2

4

super.以下の例に示すように、スーパー クラス メソッドを呼び出すことができます。

@Override
public void say() {
    super.say();
    System.out.printf(" This player plays the %s position", guard);
}
于 2013-05-01T03:08:31.770 に答える
3

次のようにして、Player クラスのスーパー メソッドを呼び出す必要があります。

@Override
public void say()
{
    super.say();
    System.out.printf("This player plays the %s position", center);
}
于 2013-05-01T03:08:50.673 に答える