Java中的包、环境变量和访问控制
一、java中的包
Java利用包来组织代码,一来使大型项目的代码结构清晰,二来包是一个命名空间的划分,即不同包中可以有相同名字的类,只需在在类名前加上包名即可区分它们。
Package xxx 必须位于java文件除了注释以外的第一行,用来指明当前文件中的类属于哪一个包,如果没有package语句,则该文件中的类都属于默认包。
Import xxx用来在当前java文件中导入不属于当前包中的类,从而可以在当前文件中使用它们。
二、java中的环境变量
1.path
环境变量其实就是一组变量(废话),它的作用是给系统和应用程序提供参数。例如:path,它告诉系统和应用程序一些系统必备的程序的存储位置,比如你要运行ipconfig命令,系统去哪里找它呢,就是通过path变量,把它所存储的位置挨个找一遍,直到找到为止。
在java中,当我们要运行java程序,在控制台输入java xxx时,java这个应用程序(exe文件)到哪里找呢?系统就得通过path,这样就得把包含java这个命令所在的目录拷贝到path环境变量中,这样以后,再运行java xxx 就不会出现“‘java’不是内部或外部命令,也不是可运行的程序或批处理文件。”了,javac同理。
2.classpath
说完path,再来说说classpath,这里就牵扯到java中的包机制了。
Java程序是由一个一个类构成的,类之间可以相互调用,还有一些java语言已经定义好的类,那么当程序要用到这些类的时候,去哪里找他们呢,这就需要classpath这个环境变量来指点迷津了。
总结:classpath指明了类查找路径,如果类没有被打包,那就需要将其所在目录添加到classpath中,如果类被打包为JAR文件,则需要将JAR文件的实际名称写清楚。
Classpath一般设置为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”
其中.代表当前目录,%JAVA_HOME%代表java jdk的路径。Dt.jar中主要是swing包中的各种控件类。Tools.jar中是各种工具类。
当编译器碰到import语句时,就开始在CLASSPATH所包含的目录中查找。
(参考:http://www.linuxidc.com/Linux/2012-01/52713.htm)
注意注意!以上是比较旧的说法,在JDK1.4以后就不用再设置CLASSPATH,Java默认会搜索上面说的那几个位置。也就是说,只用把Java的JDK的bin目录添加到Path中去,一步就完成了环境变量的配置!多废话一句,不用设置不是说不可以设置,如果你非得设置,也可以,但是切记切记不要忘了那个小小的点代表的当前目录。如果你设置了,系统会按照你设置的classpath来找类,默认的搜索路径失效,所以一定要仔细仔细再仔细!
3.JAVA_HOME
指明jdk的路径
三、访问权限控制
1.类成员的访问控制
访问控制符:public/protected/包访问权限(无关键字即默认)/private
类本身 |
同包中的子类 |
不同包中的子类 |
同包中的非子类 |
不同包中的非子类 |
总之 |
|
public |
可以 |
可以 |
可以 |
可以 |
可以 |
都可以 |
private |
可以 |
不可以 |
不可以 |
不可以 |
不可以 |
仅自身可见 |
default |
可以 |
可以 |
不可以 |
可以 |
不可以 |
仅同包可见 |
protected |
可以 |
可以 |
可以 |
可以 |
不可以 |
子类或者同包可见 |
2.类的访问控制权限
类只有两种访问控制权限:默认(即包访问控制权限)和public