本文介紹了變量具有私有訪問權限的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我試圖為矩形和橢圓創建一個抽象的Shape類我給Shape提供的唯一抽象方法是Draw方法,但在我給它一個構造函數和它給我的所有東西之后,它在Rectangle類中給了我一個錯誤,說顏色和其他變量有私有訪問,下面是我的代碼:
public abstract class Shape{
private int x, y, width, height;
private Color color;
public Shape(int x, int y, int width, int height, Color color){
setXY(x, y);
setSize(width, height);
setColor(color);
}
public boolean setXY(int x, int y){
this.x=x;
this.y=y;
return true;
}
public boolean setSize(int width, int height){
this.width=width;
this.height=height;
return true;
}
public boolean setColor(Color color){
if(color==null)
return false;
this.color=color;
return true;
}
public abstract void draw(Graphics g);
}
class Rectangle extends Shape{
public Rectangle(int x, int y, int width, int height, Color color){
super(x, y, width, height, color);
}
public void draw(Graphics g){
setColor(color);
fillRect(x, y, width, height);
setColor(Color.BLACK);
drawRect(x, y, width, height);
}
}
class Ellipse extends Shape{
public Ellipse(int x, int y, int width, int height, Color color){
super(x, y, width, height, color);
}
public void draw(Graphics g){
g.setColor(color);
g.fillOval(x, y, width, height);
g.setColor(Color.BLACK);
g.drawOval(x, y, width, height);
}
}
推薦答案
private int x, y, width, height;
意味著它們只能從聲明它們的實際類訪問。您應該創建適當的get
和set
方法并使用它們。您希望字段是public
或protected
,以便使用點符號來訪問它們,但我認為將它們保持私有并使用get
和set
是更好的設計。另請參閱In Java, difference between default, public, protected, and private,它解釋了字段的可見性。
這篇關于變量具有私有訪問權限的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,