同一个.java文件中除public类外另一个没有修饰的类(非内部类)的访问权限是什么?

public class ConstructorTest {
public static void main(String[] args){
Rock rock = new Rock();
}

}
class Rock{
Rock(){
System.out.println("I am rock with no name!");
}
Rock(int i){
System.out.println("I am rock " + i);
}
}

因为没有生成Rock.class,在其他的什么地方还能引用这个类吗?

没有明确指定public / pretected /private 关键字的类,为默认权限,也就是所谓的friendly
图片说明

默认访问权限,既不是public,也不是protected,更不是private,与另外一个类处于同一运行包下。
y依据:Java 虚拟机规范第7版第5.4.3节 访问控制

访问权限是default 也就是包访问权限。在一个源文件里面定义了多个类,编译的时候会产生多个.class字节码文件(内部类也会生成.class字节码文件,不同的内部类编译生成的.class字节码文件的文件名略有区别)

1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

引用范围为当前类及当前类同包范围内的其他类可以引用