默认情况下,类中的成员变量是私有的吗?为什么我的代码仍然有效?

时间:2014-05-17 05:32:05

标签: java oop

一个班级的成员是私下的聋人。以下代码不起作用。

#include<iostream.h>
class Test
{

int x;
};
void main()
{       Test test = new Test();
        test.x=10;

}

但是相同的代码在Java中有效吗?

class Test { 
        int x=5;
}


public class MyClass{
public static void main(String args[]) {
        Test test = new Test();
        System.out.println(test.x);
  }
}

据我说它不应该工作..因为int x是私有的deafult,它不应该对MyClass可用。

2 个答案:

答案 0 :(得分:0)

没有可见性修饰符表示该成员是private。如果成员默认为private,为什么成员会允许使用private关键字?这相当多余。

相反,成员上没有可见性修饰符意味着该字段是 package-private - 也就是说,只有与该成员相同的包中的其他类可见。

此外,struct在Java中不存在。您可能会对另一种语言感到困惑...默认情况下,成员公开的唯一地方是接口(可能是枚举?),前提是包含的接口/枚举也是公共的。

答案 1 :(得分:0)

我认为默认修饰符是包私有。因此,您可以在与Test类相同的包中使用test.x。