Java访问控制修饰符详解:private, friendly, protected, public

3星 · 超过75%的资源 需积分: 20 5 下载量 63 浏览量 更新于2024-07-27 收藏 403KB PDF 举报
"Java访问控制修饰符用于定义类、成员属性和方法的可访问性,是实现封装的关键机制。Java提供了private、friendly(默认)、protected和public四种访问权限。private修饰的元素仅限于类内部访问,friendly允许同包访问,protected除同包访问外还允许子类访问(不同包的子类也可),而public则允许所有类访问。使用访问修饰符有助于保护数据完整性,避免未授权访问,并允许在不影响其他代码的情况下调整类的实现细节。public类可以被任何地方的代码访问,通常作为程序的主入口点。" 在Java编程中,访问控制修饰符扮演着至关重要的角色,它们决定了类、字段和方法的可见性和访问范围。这些修饰符帮助我们实施面向对象的封装原则,确保数据安全,并允许我们在不破坏现有代码的情况下进行必要的修改。 1. private修饰符:私有的访问控制修饰符是最严格的,只允许在同一类内部访问。这用于保护数据不被外部类直接操作,增强了数据的安全性。例如,私有变量通常通过getter和setter方法进行访问和修改,确保了数据的完整性和一致性。 2. friendly(默认)修饰符:如果未指定任何访问修饰符,那么类、字段和方法将具有包级私有(friendly)访问权限,这意味着它们只对同一包内的类可见。这是默认的访问级别,适用于不希望公开但需要在包内共享的数据。 3. protected修饰符:比friendly更开放,protected不仅允许同包访问,还允许不同包内的子类访问。这对于子类需要扩展或覆盖父类的功能时非常有用,同时保持一定的封装性。 4. public修饰符:public是最宽松的访问控制,允许任何地方的代码访问。公共类、方法和字段是对外的接口,可以被不同包的其他类直接调用。每个Java应用程序的主类通常声明为public,以便JVM能够找到并执行程序的起点。 举例说明,如果我们有一个名为`Library`的包,其中包含一个`Book`类: ```java // Library包 package Library; public class Book { private String title; // 私有标题,只能在Book类内部访问 protected int publicationYear; // 受保护的出版年份,允许子类和同包访问 public String author; // 公共作者,所有地方都能访问 // getters and setters... } ``` 在另一个包`Reader`中,我们可以创建一个子类`User`来访问`Book`的protected和public成员: ```java // Reader包 package Reader; import Library.Book; public class User extends Book { public void displayBookInfo() { System.out.println("Title: " + getTitle()); System.out.println("Publication Year: " + getPublicationYear()); System.out.println("Author: " + author); } } ``` 在这个例子中,`User`类虽然不能直接访问`title`(因为它是private的),但可以访问`publicationYear`(protected)和`author`(public)。这就是访问控制修饰符在实际编程中的应用,确保了代码的结构清晰、安全和易于维护。