在Java中,包(package)和访问修饰符是管理类、接口和其他成员(例如方法和属性)访问级别的重要工具。
包(Package)
包是Java中的命名空间机制,用于组织和管理类和接口。包可以避免命名冲突,提高程序的模块化。
创建包
在Java源文件的第一行,你可以使用package
关键字来声明该文件中定义的所有类型(类、接口等)所属的包。
package com.example.mypackage;
public class MyClass {
// ...
}
上面的代码声明了一个名为com.example.mypackage
的包,并且MyClass
类是这个包的一部分。
使用包中的类
当你需要使用不同包中的类时,你可以使用import
关键字导入相应的类或整个包。
import com.example.mypackage.MyClass;
// 或者导入整个包
import com.example.mypackage.*;
public class Test {
public static void main(String[] args) {
MyClass myObj = new MyClass();
}
}
包的命名规则
包名通常全部为小写字母,多级包名之间用点.
隔开。惯例上,包名以公司的反向互联网域名开始,后跟项目名和模块名。
访问修饰符(Access Modifiers)
访问修饰符定义了类和类的成员(字段、方法、构造器等)的访问级别。Java提供了四种访问修饰符:
-
public:成员对所有类都是可见的。如果类是public的,那么这个类对所有包都是可见的。
-
protected:成员对同一个包内的类和所有子类可见。
-
默认(没有指定修饰符):成员只对同一个包内的类可见。默认访问级别没有关键字,但通常被称为“包私有”(package-private)。
-
private:成员只在定义它们的类中可见。
访问级别
访问修饰符 | 当前类 | 同一包内 | 子类 | 外部包 |
---|---|---|---|---|
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | ✗ |
默认 | ✓ | ✓ | ✗ | ✗ |
private | ✓ | ✗ | ✗ | ✗ |
示例
package com.example.library;
public class Book {
private String title; // 只在Book类中可见
protected String author; // 在同一个包内和所有子类中可见
int issueYear; // 默认访问级别,同一个包内可见
public String publisher; // 对所有人可见
}
在上面的例子中,Book
类有四个字段,每个字段都使用了不同的访问修饰符。
总结
包是Java中用于组织类和接口的命名空间,帮助程序员有效地管理项目结构,避免类名冲突,并可以控制类和成员的访问范围。访问修饰符是实现封装的关键部分,它们帮助程序员规定类的内部实现应该被外部世界看到的程度,以及哪些部分应该保持私有。正确地使用包和访问修饰符可以提高代码的安全性和模块化,是Java软件设计的重要方面。