【Java基础教程】(十八)包及访问权限篇 · 下:Java编程中的权限控制修饰符、单例设计模式 (Singleton)和多例设计模式的综合探析~
发布人:shili8
发布时间:2025-01-21 19:40
阅读次数:0
**Java基础教程**(十八)包及访问权限篇在 Java 中,包(package)是组织类、接口、枚举等的基本单位。每个类都属于一个包,而包之间可以有依赖关系。在这个教程中,我们将讨论包的概念、访问权限以及相关的修饰符。
### 包的概念和作用在 Java 中,包用于组织类、接口、枚举等,使得它们更容易管理和维护。每个类都属于一个包,而包之间可以有依赖关系。这意味着,如果两个类位于不同的包中,那么它们就不能直接访问彼此的成员。
**示例代码**
java// package com.example; public class Person { private String name; public Person(String name) { this.name = name; } public void sayHello() { System.out.println("Hello, my name is " + name); } }
在这个例子中,`Person`类属于包 `com.example`。如果我们想访问 `Person`类的成员,我们需要导入该包。
### 访问权限Java 提供了四种访问权限修饰符:public、protected、default(缺省)和 private。
* **public**:任何地方都可以访问。
* **protected**:同一个包内以及子类中都可以访问。
* **default**(缺省):同一个包内都可以访问。
* **private**:只有同一个类内部才能访问。
**示例代码**
java// package com.example; public class Person { private String name; public Person(String name) { this.name = name; } public void sayHello() { System.out.println("Hello, my name is " + name); } } class Friend { public void sayHello(Person person) { person.sayHello(); // OK person.name; // Error: cannot access private member } }
在这个例子中,`Person`类的 `name`成员是私有的,因此不能在 `Friend`类中直接访问。
### 权限修饰符Java 提供了以下权限修饰符:
* **public**:任何地方都可以访问。
* **protected**:同一个包内以及子类中都可以访问。
* **default**(缺省):同一个包内都可以访问。
* **private**:只有同一个类内部才能访问。
### 单例设计模式单例设计模式是一种常见的设计模式,它确保在整个应用程序中只创建一个实例。这个实例通常是通过静态方法来获取的。
**示例代码**
javapublic class Singleton { private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } }
在这个例子中,`Singleton`类只有一个实例,这个实例是通过静态方法 `getInstance()` 来获取的。
### 多例设计模式多例设计模式是一种常见的设计模式,它允许创建多个实例。这个实例通常是通过静态方法来获取的。
**示例代码**
javapublic class MultiSingleton { private static Mapinstances = new HashMap<>(); public static MultiSingleton getInstance(String key) { if (!instances.containsKey(key)) { instances.put(key, new MultiSingleton()); } return instances.get(key); } }
在这个例子中,`MultiSingleton`类允许创建多个实例,每个实例都有一个唯一的键。
### 总结包和访问权限是 Java 中非常重要的概念。通过正确使用这些概念,我们可以编写更高质量、更易于维护的代码。在这个教程中,我们讨论了包的概念、访问权限以及相关的修饰符,并提供了示例代码来帮助理解这些概念。
### 参考资料* 《Java语言规范第8 版》
* 《Java编程思想》第三版* 《设计模式:可复用面向对象软件的基础》第四版