当前位置: 技术文章>> 100道Java面试题之-Java中的访问修饰符有哪些?它们之间的区别是什么?
文章标题:100道Java面试题之-Java中的访问修饰符有哪些?它们之间的区别是什么?
Java中的访问修饰符用于控制类、类的成员变量和方法的访问权限,它们主要包括以下四种:
### 访问修饰符
1. **public**
- **含义**:公共访问修饰符,表示该成员可以被任何类访问。
- **访问范围**:无限制,任何类都可以访问。
- **示例**:`public class MyClass`、`public int myVariable`、`public void myMethod()`。
2. **protected**
- **含义**:受保护的访问修饰符,表示该成员可以被类本身、子类和同一个包中的其他类访问。
- **访问范围**:同一包内的类可以访问,不同包中的子类也可以访问。
- **示例**:`protected int myProtectedVariable`、`protected void myProtectedMethod()`。
3. **default(无修饰符,也称为包访问权限)**
- **含义**:当成员变量或方法没有指定访问修饰符时,它的访问权限默认为default。
- **访问范围**:只能被同一个包中的其他类访问。
- **示例**:`int myDefaultVariable`、`void myDefaultMethod()`(注意这里没有显式的修饰符)。
4. **private**
- **含义**:私有访问修饰符,表示该成员只能被类本身访问。
- **访问范围**:仅限于类内部,子类和其他类都无法访问。
- **示例**:`private String myPrivateVariable`、`private void myPrivateMethod()`。
### 访问修饰符之间的区别
以下是四种访问修饰符之间的主要区别,可以通过表格形式展示:
| 修饰符 | 同一类 | 同一包 | 子类 | 其他包 |
|----------|--------|--------|------|--------|
| public | ✔️ | ✔️ | ✔️ | ✔️ |
| protected| ✔️ | ✔️ | ✔️ | |
| default | ✔️ | ✔️ | | |
| private | ✔️ | | | |
- **public**:完全开放,任何地方都可以访问。
- **protected**:在包内和子类中开放,但在其他包中需要通过子类访问。
- **default(无修饰符)**:仅在同一个包内开放。
- **private**:完全封闭,仅在类内部开放。
### 使用建议
- **public**:适用于需要被外部广泛访问的类、方法和变量。
- **protected**:适用于需要被子类访问,但不需要被其他包中的类直接访问的成员。
- **default(无修饰符)**:适用于仅在包内部使用的类、方法和变量。
- **private**:适用于类的内部实现细节,不希望被外部访问的成员。
合理使用访问修饰符可以提高代码的安全性、可读性和可维护性。在编写Java代码时,应根据需要为每个类、成员变量和方法选择适当的访问修饰符。