我在下面的代码中使用受保护的修饰符,但它不像我所期望的那样工作。为什么这个受保护的属性不起作用?
这是我的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