我正在使用Java
public class Drink {
private String contents;
Drink(String theContents){
contents = theContents;
}
public static void main(String[] args) {
Drink water = new Drink("water");
Drink oj = new Drink("orange juice");
Drink cocaCola = new Drink("Coca Cola");
oj.contents = "not orange juice";
System.out.println(oj.contents);
}
}
我认为输出应该是错误。
例如, oj.contents = "not orange juice";
行会产生错误。
如果这是错误的,请告诉我原因:) 谢谢
答案 0 :(得分:2)
只有一个名为Drink的类,其中包含变量和main方法。因此main方法可以访问私有变量,因为它们属于同一类。如果要从另一个类访问变量,则需要getter和setter方法。
答案 1 :(得分:2)
公共变量是所有类可见的变量。私有变量是仅对它们所属的类可见的变量。受保护的变量是仅对它们所属的类和任何子类可见的变量。
变量内容对于其他类是不可见的,因为它是私有的。但是您可以在Drink类中的任何地方访问它
答案 2 :(得分:0)
private
主要是指:对同一源文件可见(因此可编辑;私有/公共/程序包私有/受保护都是无关紧要的事情)。
这是一种思考的好方法(IMO):代码是与类一起出现的概念;而不是这些类的实例。因此,此处的代码正在修改其自己的字段之一:contents
是此源文件的私有字段。 “但是,这不是您自己的,而是oj
来的饮料!” -不,这是基于对象的思想。基于类的思考说:这是文件中的“ Drink.contents”字段。
答案 3 :(得分:0)
从official docs 该图片将为您总结:
定义了“私有”访问修饰符的任何方法或变量都可以访问。该类之外的任何组件将无法访问。 尽管您还应该检查一下Java中的Reflection,这是该规则的一个例外。