您的位置:首页 > 编程语言 > Java开发

ThinkingInJava_6

2015-10-28 00:00 387 查看
摘要: 访问控制权限。主要精力集中在编译器是如何进行jar的加载的。这个机制有待以后深究

等Gloria中。最近项目忙了起来,打算写篇最近的“鸡汤”,名字都想好了,就叫做:对于每个人来说,刚入职能写点代码,挺好。

1、当编写一个Java源代码文件时,此文件通常被称为编译单元(有时候也被称为转译单元)。每个比哪一单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件名的后缀.java)。每个编译单元只能有一个public类,否则编译器就不会接受(如果没有public的class也是可以编译的,但是运行不了,如果要是有public的类必须和文件名一样,而且只能有一个public的类)。如果在该编译单元之中还有额外的类的话,那么在包之外的世界史无法看见这些类的。

2、编译器其实是把package名称分解成机器上面的一个目录

3、jar包的扫描与加载其实很多时候是动态的,在我们运行程序或者项目的时候,系统通过特定的代码(这段代码可以自己写,很大可能是开发工具或者是框架做好了的)将所有jar包所在的路径+包名称扫描加载进内存中去。此时我们就可以import每个jar包里面对应的路径下面的类了。如果我们想要静态的在整个操作系统中导入一个jar的话,必须要在环境变量的classpath里面进行全路径+jar包名称的配置。现在的JDK已经很智能了,能默认的将Java自带的jar工具类加载进系统,而不用我们在环境变量中添加。classpath配置里面“.”代表着当前路径下面。JDK运行的时候现在也是默认从当前路径下面进行加载的了。

4、protected这种访问控制也是提供包访问权限的。这一点可能很多时候被疏忽。

5、一个类既不可以是private(这样其他类任何都不可以访问他了)也不可以是protected的,但是内部类是可以用这两个访问控制权限的。

6、访问控制权限的好处:

①设定了客户端程序员可以与不可以使用的界限。可以建立自己的内部机制,不必担心客户端程序猿偶尔的大意而去访问修改了一些内部的数据。

②可以将实现和接口分离。解耦和的思想。具体调用接口的程序员不用管实现的程序员。如此一来,一个功能的开发与使用分离,提高了维护效率。

7、如果没能为一个类访问控制权限指定一个访问修饰符(在class前面),他就会默认得到包访问权限,这就意味着该类的对象可以由包内的任何其他类来创建,但是在包外则是不行的(如果一个文件没有明确的package信息的话,被视为是该目录下面默认包的一部分)。然而,如果该类的某个static成员是public的话,则客户端程序员仍旧调用该static成员的,尽管他们并不能生成该类的对象。

8、其实客户端程序员一般情况是用不了默认权限的类的(就是在class前面没有任何修饰符的类,因为这种包访问权限,客户端程序员都是包外进行编码的),上面第7条后面那种情况例外。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: