Java 包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
如何创建包
创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。
包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。
如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。
如何实现包
通过 package 关键字可以声明一个包,例如:
package edu.xalead;
必须将 package 语句放在所有语句的前面,例如:
package p1.p2;
public class Test {
public static void main(String[] args) {
System.out.println("大家好!");
}
}
表明 Test 类位于 p1.p2 包中。
import 关键字
为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。
在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:
import package1.package2….classname*;
类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。
包的调用
在Java中,调用其他包中的类共有两种方式。
设置一个公共包:
package p0;
public class Animal {
private String name;
public Animal(String Name) {
this.name = Name;
}
public void eat(){
System.out.println(name+"正在吃饭");
}
public void sleep(){
System.out.println(name+"正在睡觉");
}
}
1) 在每个类名前面加上完整的包名
package p1.p2;
public class Test {
public static void main(String[] args) {
p0.Animal s = new p0.Animal("大黄狗");
s.eat();
s.sleep();
}
}
2) 通过 import 语句引入包中的类
程序举例:
package p1.p2;
import p0.Animal;
public class Test {
public static void main(String[] args) {
Animal s = new Animal("大黄狗");
s.eat();
s.sleep();
}
}
包的作用
-
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
-
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
-
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
包的访问权限
被声明为 public 的类、方法或成员变量,可以被任何包下的任何类使用,而声明为 private 的类、方法或成员变量,只能被本类使用。
权限修饰符
public | protected | 默认 | private | |
同一类中 |
★ | ★ | ★ | ★ |
同一包子类,其他类 | ★ | ★ | ★ | |
不同包子类 | ★ | ★ | ||
不同包其他类 | ★ |
没有任何修饰符的类、方法和成员变量,只能被本包中的所有类访问,在包以外任何类都无法访问它。