亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使抽象超類的方法適用于子類

如何使抽象超類的方法適用于子類

慕斯王 2024-01-25 15:16:32
我正在制作一個國際象棋游戲,并嘗試對所有棋子使用繼承設計。我想讓子類 pawn 使用 Piece 中的 printPiece 方法,但我必須修改每個塊的參數。我知道在兩個類上使用相同的參數有點愚蠢,但我不知道如何使超類使用 print 方法而不在其中聲明圖標。同樣,如果我想在超類上創建吸氣劑,子類無法識別它們。我已經嘗試過提供的代碼,它無法識別圖標是來自 pawn 的“i”,它只是使用超類方法并寫入 null。還嘗試對參數進行保護,但結果相同。public abstract class Piece{    private String name;    private int value;    private boolean alive;    private char icon;    public Piece() {}    public abstract Coordinate movePiece(Coordinate coor);    public abstract boolean canMovePiece();    public void printPiece()    {        System.out.print(icon);    }}public class Pawn extends Piece {    private String name;    private int value;    private boolean white;    private char icon;    public Pawn(boolean pWhite) {        super();        this.value = 1;        this.name = "Pawn";        this.white = pWhite;        if(pWhite) {this.icon = 'I';}        else {this.icon = 'i';}    }    public Coordinate movePiece(Coordinate coor){}    public boolean canMovePiece() {}}
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

當你擴展 Piece 時,你想要繼承 Piece 中所有 Piece 子類所共有的東西。所以你不用在 Pawn 中重新聲明變量。


            public class Piece

            {

                private char icon;

                public char getIcon() { return icon; }

                public void setIcon(char i) { icon = i; }

                public Piece(char c) { setIcon(c); }

            }


            public class Pawn extends Piece

            {

                public Pawn()

                {

                    super('I');

                }

            }

這是一種讓每個子類都有一個圖標的方法,存儲在 Piece 中,以及設置和訪問它的方法。


查看完整回答
反對 回復 2024-01-25
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

通過在超類中聲明 a private char icon,可以防止子類訪問它。

您可以聲明private char icon一個 setter,或者將其作為父類構造函數的一部分,而不是在子類中重新聲明 a(這會隱藏父類的變量)。


查看完整回答
反對 回復 2024-01-25
  • 2 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號