假如cmd的当前目录是D:\javalearn,当前工作目录也是此目录:
package com.edicypages.ackerman; public class HelloWorld{ public static void main(String[] args){ System.out.println("hello world!"); } }
则cmd下输入"javac -d . HelloWorld.java"会在当前目录下自动生成“com\edicypages\ackerman”目录结构,输入"java com.edicypages.ackerman.HelloWorld"运行此程序。
在任意目录(可能不是D:\javalearn)下建立Test.java
import com.edicypages.ackerman.HelloWorld; public class Test{ public static void main(String[] args){ HelloWorld hw=new HelloWorld(); } }
cmd转到Test.java所在的目录,javac编译,此时可能出错,这是因为编译器未能搜索到包(com.edicypages.ackerman)。在环境变量中设置CLASSPATH:D:\javalearn,则此时可成功编译。
访问权限控制的等级,从最大权限到最小权限一次为:public、protected、包访问权限(没有关键词)和private。
包内含有一组类,它们在单一的名字空间之下被组织在了一起。当编写一个Java源代码文件时,此文件通常被称为编译单元,每个编译单元只能有一个public类,和文件名相同。当编译一个Java文件时,在Java文件中的每一个类都会有一个输出文件,而该输出文件的名称和Java文件中的每个类的名称相同,只是多了一个后缀名.class。这些类包括public类和非public类(有"$"标记)。
首先找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠。
但在使用JAR文件时,必须在类路径中将JAR文件的实际名称写清楚,而不仅是指明它所在位置的目录。
(1)包访问权限
如果没有指定权限修饰词,默认为包访问权限。
(2)public:接口访问权限
意味着public之后紧跟的成员声明自己对每个人都是可用的。
(3)private
如果将某个类的构造函数设为私有的,就可以组织别人直接访问某个特定的构造函数,进而可以控制如何创建对象(比如可以通过类的静态成员函数)。
(4)protected:继承访问权限
若果创建了一个新包,并自另一个包中继承类,那么可以访问的成员就是源包的public成员和protected成员。protected成员也提供包访问权限,也就是说相同包内的其他类可以直接访问protected元素。