包:库单元

1.当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。

2.每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类名称必须和文件的名称相同。

3.每个编译单元只能有一个public类,否则编译器就不会接受。

4.如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,因为它们不是public类。

代码组织

xx.java编译生成xx.class

package语句必须是文件除注释以外的第一句程序代码

package:
package com.util.tools;
public class Tools {
public static void print(Object object) {
System.out.println("" + object);
}
}
import:
package com.test;
package com.test;
import static com.util.tools.Tools.*; //注意
import java.util.*;
public class Test {
public static void main(String[] args) {
print("Hello Java.");
print(Calendar.getInstance().getTime().toString());
}
}

创建独一无二的包名

按照惯例,package名称的第一部分是类的创建者的反顺序的Internet域名

java解释器的运行过程

1.找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录

2.从根目录开始,解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称

3.得到的路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与你所要创建的类名称相关的.class文件

注:CLASSPATH=.;D:\JAVA;C\flavors\grape.jar //其中JAR文件的实际名称需要写清楚

Java访问权限修饰词

public - protected - 包访问权限(无关键字) - private

置于类中每个成员的定义之前,无论它是域还是方法

访问控制权限常被成为:具体实现的隐藏

取得对某成员的访问权限途径

1.使成员成为public

2.放在同一包中,不加访问权限修饰词

3.使用继承

4.提供访问器和变异器(get/set方法)

public:接口访问权限

任何类都可以访问

protected:继承访问权限

protected也提供包访问权限,相同包内的其他类可以访问protected权限

包访问权限

默认权限,无关键字

当前包中的所有其他类对那个成员都有访问权限,对于包之外的所有类,这个成员却是private

默认包:在相同目录下,都没有定义package,是具有包访问权限的

private

除了包含该成员的类之外,其他任何类都无法访问这个成员

package com.test;
public class Num1 {
protected static int i = 0;
static int j = 0;
private static int k = 0;
}
class Num2 {
int i = Num1.i;
int j = Num1.j;
//int k = Num1.k; //不能访问private,编译报错
}
class Num3 extends Num1 {
int a = i;
int b = j;
//int c = k; //子类也不能访问private域,编译报错
}

类访问权限

类可以为public和包访问权限的,但不可以是private和protected的(内部类除外)。

如果不希望其他任何人对该类拥有访问权限,可以把构造器指定为private,从而阻止创建该类对象,但可以在该类内部创建对象。【单例模式】

public class Test {
public static void main(String[] args) {
Camera mCamera = Camera.newCamera();
}
}
class Camera {
private static Camera mCamera = new Camera();
private Camera() {}
public static Camera newCamera() {
return mCamera;
}
}

总结

访问权限

类内部

本包

子类

外部包

public

protected

×

包访问权限

×

×

private

×

×

×

访问权限使用

1.类只能用public,protected

2.方法,成员变量,局部变量可以使用以上四种权限

访问权限

成员访问权限

默认:不声明的话,就是包访问权限,同一个包下的可以访问,包外的无法访问。

public:都可以访问。

protected:继承访问权限,它的子类可以访问;同时也是包访问权限,同一个包内的可以访问。

private:类外无法访问。

类访问权限

public:

包访问权限:此时最好将该类的域声明为private才有意义。

注:类访问权限不能是private的,如果不希望任何其他访问该类,可以将此类的构造器定义为private,不让其他可以定义该类的对象!

protected也不行!

如果一个类的构造器是private

可以在这个类里在定义一个 public static 类名 的方法,在方法里调用构造器返回这个类的对象引用  (return new leiming())。然后在类外,调用这个方法来建立该类的对象引用。