我在以下代码中使用了protected修饰符,但它没有像我期望的那样工作。
这是我的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());
}
}
答案 0 :(得分:1)
protected
关键字将变量或函数的可访问性范围限制在同一个包中,或者使用所述变量或函数继承该类的任何子类。这意味着只要两个类在同一个包中,他们就可以使用protected
关键字访问彼此的属性和方法。在这种情况下,它们不仅在同一个包中,而且在同一个类文件中。如果您想将x,y
的访问权限仅限于Coordinates2D
类,请改为使用关键字private
。
答案 1 :(得分:0)
protected
成员可见
由于这些类位于同一个文件中,因此它们位于同一个包中,因此它们可以访问。
答案 2 :(得分:0)