1:关于Java中类和方法前面的修饰符
java中类只能是public、final、abstract来修饰,本身如果不写的话则是(default),default的权限是在和此类在同一个包里才能访问到,而不再同一个包的则不能访问到
java中的方法可以是public、protected、friendly、private,权限如下图所示
当然方法前面还可以是static了
2:关于一个java文件和多个类之间的关系
一个.java文件可以写多个类,多个类又分两种情况
1)包含内部类
一个类中可以包含多个内部类,而内部类的前面又可以用protected、private等进行修饰了(这是不是和标准的类是不一样的),可以吧内部类当做类中的属性来理解,所以可以用public修饰了
内部类的可见性问题:
a):在同一个类中可见性:在同一个类中的所有内部类在这个类中都可以获取到实例
方式一 OuterClassName.InnerClassName inner=newOuer().new Inner();
方式二 反射获取getInstance
b):在同一个包中可见性:试图得到private内部类失败,根本得不到内部类的句柄,但是default、public、protected还是可以获取的,并且default、public、protected的类中除private修饰的类或者属性都可以访问。
c):在不同包中的可见性:new方式和getInnerInstance()方法只能访问public内部类的public成员和public方法;并且public的类中除public修饰的类或者属性都不可以访问。
综上所述,内部类的权限可以参照类中的属性,把内部类当做类的一个属性,则可以理解了
2)不包含内部类
a):一个.java文件可以有或者没有一个public类 其余则必须是default、final、abstract,如果是有一个public的话,则这个public的类名必须和.java文件名一样,如果没有public的话,则可以写任意个类,也不限制类名,类的权限限制没有变化(和1的笔记一样)
b):在编译后产生的class文件中,仍旧是多个单独分开的class文件