【发布时间】:2015-01-12 05:35:00
【问题描述】:
我在以下代码中使用了受保护的修饰符,但它没有像我预期的那样工作。
这是我的 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());
}
}
【问题讨论】:
-
可能重复:stackoverflow.com/questions/215497/…
protected允许在同一个包中访问。 -
您正在尝试在 Coordinates2D 类之外设置对象值。因为 ob1.x 受到保护,它会给你一个错误。
-
它们在同一个包中吗?如果是,那么这很好用。 protected 表示可以在包中查看。如果您只希望该类查看它,则应使用 private。
-
正是我希望有一个编译错误,但它的工作原理。通常如果我在 MAIN 中使用 ob1.x=4 它应该也可以工作
-
这两个类是否在同一个包中?
标签: java inheritance protected