【Thinking in Java】五:访问权限控制

一  Java为什么提供访问权限修饰符

程序员分为类创建者和客户端程序员。
1 为了使用户不要触碰不应该触碰的部分,这些部分对于类的操作是必须的,但是它不属于客户端程序猿所需接口的一部分,这些部分就指定域为private
2 为了让类创建者可以更改类的内部工作方式,而不必担心对客户端程序员产生重大的影响。

下面是Java权限修饰符权限:


二 如何解决类名称冲突

Java引入了包机制 package,package名称的第一部分是类的创建者的反顺序的Internet域名,域名是独一无二的,因此你的包名称也是独一无二的。

三 Java环境变量CLASSPATH

安装JDK时,要配置CLASSPATH
Java解释器的运行过程:首先找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class的根目录。

这是我本机的配置:


然后解释器获取包的名称跟据操作系统的不同,产生正斜杠或者反斜杠的路径。
得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类。

加载器主要有四种:

jvm启动类加载器bootstrap loader,用c++实现为jvm的一部分(仅指sun的hotspot),负责 JAVA_HOME/lib下面的类库中的类的加载,这个加载器,java程序无法引用到。

扩展类加载器Extension Loader,由sun.misc.Launcher$ExtClassLoader类实现,可在java中使用,负责JAVA_HOME/lib/ext 目录和java.ext.dir目录中类库的类的加载。

应用系统类加载器Application System Loader,由sun.misc.Louncher$AppClassLoader实现,负责加载用户类路径中类库中的类,如果没有使用自定义的加载器,这个就是默认的 加载器!

用户自定义加载器 自己定义从哪里加载类的二进制流



web.xml里面的classpath



通过下面的图我们可以了解到 classpath为 /WEB-INF /classes/  这个路径


这两个classpath应该是没有什么关联关系的,如果有朋友有其他观点,不吝赐教。


类加载参考地址:
http://www.cnblogs.com/fsjohnhuang/p/4284515.html
http://my.oschina.net/jingxing05/blog/275141

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
     在我们的程序开发当中,经常会用到java.sql.Blob、byte[]、InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util. 一、byte[]=Blob 我们可以通过Hibernate提供的表态方法来实现如: org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]); 二、Blob=byte[] 目前没有找到好一点的API提供,所以只能自

Java API读写HDFS - 2016-04-11 15:04:06

HDFS是Hadoop生态系统的根基,也是Hadoop生态系统中的重要一员,大部分时候,我们都会使用Linux shell命令来管理HDFS,包括一些文件的创建,删除,修改,上传等等,因为使用shell命令操作HDFS的方式,相对比较简单,方便,但是有时候,我们也需要通过编程的方式来实现对文件系统的管理。  比如有如下的一个小需求,要求我们实现读取HDFS某个文件夹下所有日志,经过加工处理后在写入到HDFS上,或者存进Hbase里,或者存进其他一些存储系统。这时候使用shell的方式就有点麻烦了,所以这时
在学习了前面关于多线程的博客之后,下面来介绍一个构建可靠结果缓存的例子。现在有如下场景: import java.math.BigInteger;interface ComputableA,V{public V compute(A arg) throws InterruptedException;}public class Demo implements ComputableString,BigInteger{public BigInteger compute(String arg) throws Inte

MyBatis:使用 XML 配置 MyBatis - 2016-04-11 14:04:28

使用 XML 配置 MyBatis     构建 SqlSessionFactory 最常见的方式是基于 XML 配置(的构造方式)。下面的 mybatis-config.xml 展示了一个典型的 MyBatis 配置文件的样子: ?xml version="1.0" encoding="utf-8"?!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-con
        单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。 一.饿汉法         顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下: public class Singleton { private static Singleton = new Singleton(); private Singleton() {} public
package test; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; /** * 该类用于测试 通过转换日期格式创建文件夹 * @author lenovo * */ public class MyTest { public static void main(String[] args) { MyTest.createFile(); } public static void createFil

MyBatis简单应用 - 2016-04-10 17:04:48

假设你的系统上已经安装了 JDK1.6+ 和 Derby数据库。本文并不限定你使用什么类型的 IDE(如 Eclipse,NetBeans IDE,或者 IntelliJ IDEA,它们通过提供自动完成,重构,调试特性来很大程度上简化了开发)来编码,你可以选择你喜欢的 IDE。 本节将(通过以下步骤)说明如何使用 MyBatis 开发一个简单的 Java 项目:  新建表 STUDENTS,插入样本数据  新建一个 Java 项目,将 MyBatis-3.2.2.jar 添加到 classpath 中  

Mongodb java api操作 - 2016-04-10 14:04:11

主要介绍mongodb对应java的常用增删改查的api,以及和spring集成后mongoTemplate的常用方法使用   1.首先上需要用到的两个实体类User和Home,对应用户和家乡 import java.util.List; import org.springframework.data.mongodb.core.mapping.Document; /**  * java类转换为mongodb的文档,它有以下几种注释:  * 1.@Id - 文档的唯一标识,在mongodb中为ObjectI
最近有个日志收集监控的项目采用的技术栈是ELK+JAVA+Spring,客户端语言使用的是Java,以后有机会的话可以试一下JavaScript+Nodejs的方式,非常轻量级的组合,只不过不太适合服务化的工程,Kibana充当可视化层,功能虽然非常强大和灵活,但是需要业务人员懂Lucene的查询语法和Kibana的Dashboard仪表盘自定义功能才能玩的转,所以Kibana面向专业的开发人员和运维人员比较良好,但面向业务人员则稍微有点难度,我们这边就使用Java进行二次开发,然后前端定义几个业务人员关

java map顺序 - 2016-04-09 18:04:52

hashmap  瞎排 treemap   首位为字母数字的话 按照首位排 linkedhashmap 按照放入的顺序