Java编程思想之访问权限控制

时间:2022-06-19 15:15:59

1.     访问权限控制的等级,从最大权限到最小权限依次是:public,protected,包访问权限(没有关键词)和private。

2.     Java源代码文件内只能有一个同名的public类,如果文件内有额外的类的话,包外的类是无法看到这些类的。

3.     当编译源代码文件时,对文件中的每个类,都会有一个输出文件。意味着一个类可以产生多个.class文件。

4.     Java可运行程序是一组可以打包并压缩为一个JAR的.class文件。类库是一组类文件,每个文件中有一个public类和若干非public类。因此每个文件都有一个构件。如果希望这些构建从属于一个群组,就可以用关键字package.

5.     源文件的名称必须位于package声明的路径一下,换句话说,public类的全名是:package路径/源文件名。Import一般后面跟全名,表示可以直接用该类。若把文件名换成*表示可以直接用package路径下的所有类。

6.     Package名即是个人域名的逆序,也是机器上的一个目录。Java解释器从环境变量CLASSPATH(可能有多个)作为根目录,寻找与包名相符的路径下对应的.class文件。所以总的路径是:CLASSPATH+包名(子目录)。但在使用JAR文件时,必须在类路径中将JAR文件的实名写清楚。编译运行某程序库时,必须在CLASSPATH中指定程序库的基目录。

Java编程思想之访问权限控制

7.     过于滥用*符号,可能导致类名冲突问题,所以可以使用单个类导入的形式来防止类冲突。

8.     静态导入类文件后,可以在该源程序中,直接使用导入的类文件中的静态函数,不需要全名。

9.     用import切换调试的包到发布版的包,达到调试的功能(条件编译)。编译后的.class文件与源代码文件一般不在同一路径下,但都在CLASSPATH根目录下。

10.  包访问权限:当前包的所有其他类对这个成员都有访问权限,但对于包外的其他类,这个成员确实private. 继承而来的类可以访问父类的public成员和protected成员,但无法访问父类的private成员。

11.  public权限:所修饰的成员声明自己对每个人都可用。若两文件在同一个路径下,且没设定包名,则Java会自动看作这两个文件隶属于该目录的默认包之中,因此可以提供和使用包访问权限。

12.  private权限:除了包含该成员的类之外,其他任何类都无法访问该成员。

13.  protected权限:继承访问权限,也提供包访问权限。子类可以继承父类的所有方法,但得根据父类方法的修饰符来判断是否能访问。

14.  封装:把数据和方法包装在类中,以及具体实现的隐藏。

15.  类的访问权限:确定库中的哪些类对与该库的使用者是否可用。用public修饰类名,意味着客户端程序员可用。虽然不是很经常用,但源代码文件内可以不带public类,在这个情况下,可以对文件随意命名。这意味着这个类只能用于该包之中。

16.  对于包访问权限的类来说,可以将类的域设为private和public。

17.  类既不可以private,也不可以protected,只能是包访问权限和public。如果不希望其他人创建该类的对象,只需要对所有构造器设定为private,但可以在该类的static成员内部创建这个类的对象。

18.  单例设计模式:作为类的static private成员而创建的,所以有且只有一个,而且通过public方法来获得该成员的引用,所以始终只能创建它的一个对象。

19.  先进行类访问限制,再进行域和方法的访问限制。外部类访问时,取访问限制最强的为最终访问限制。相同目录下的所有不具有明确package声明的文件,都视为该目录下默认包的一部分。但如果该类的某个成员是staticpublic则客服端程序员可以调用这个成员。