我在下面的代碼中使用受保護的修飾符,但它不像我所期望的那樣工作。爲什麼這個受保護的屬性不起作用?
這是我的Prob3.java文件,編譯時我期望有錯誤ob1.x=4;
任何人都可以解釋爲什麼我沒有得到一個?
class Coordinates2D{
protected int x,y;
public Coordinates2D(int x,int y){
this.x=x;
this.y=y;
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
public void setX(int val){
this.x=val;
}
}
public class Prob3{
public static void main(String[] args){
Coordinates2D ob1 = new Coordinates2D(3,4);
ob1.x=4;
System.out.println("Atributele ob 2D: "+ ob1.getX()+" , "+ob1.getY());
}
}
可能的重複:http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private'protected'允許在同一個包中訪問。 – clcto 2014-11-14 18:35:31
您正試圖在類Coordinates2D之外設置對象值。因爲ob1.x受保護,它會給你一個錯誤。 – 2014-11-14 18:35:31
它們是否在同一個包中?如果他們是,那麼這工作正常。受保護意味着它可以在包裝內查看。如果你只希望它被那個班級看到,你應該使用私人的。 – AdamMc331 2014-11-14 18:35:40