27 面向对象编程基础之访问控制修饰符

在Java中,面向对象编程是核心思想之一,而访问控制修饰符则是实现这一思想的关键部分之一。通过合理使用访问控制修饰符,我们可以有效地保护类的数据成员不被非法访问,从而提高程序的安全性和可维护性。

访问控制修饰符类型

Java中主要有四种访问控制修饰符,它们分别是:

  1. public:公共访问修饰符,成员可以被任何其他类访问。
  2. protected:受保护访问修饰符,成员可以被同一个包中的类以及所有子类访问。
  3. default:默认访问修饰符,如果没有指定修饰符,默认是包级访问,成员可以被同一个包中的类访问。
  4. private:私有访问修饰符,成员只能被同一个类访问。

接下来,我们将详细探讨每种修饰符的使用及其影响。

1. public 修饰符

使用 public 修饰符的成员可以被任何其他类访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class PublicExample {
public int publicVariable = 10;

public void publicMethod() {
System.out.println("This is a public method");
}
}

class Test {
public static void main(String[] args) {
PublicExample example = new PublicExample();
System.out.println(example.publicVariable); // 访问public变量
example.publicMethod(); // 调用public方法
}
}

在上述示例中,publicVariablepublicMethod 可以被 Test 类直接访问。

2. protected 修饰符

protected 修饰符可以在同一包中的类以及所有子类中访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class ProtectedExample {
protected int protectedVariable = 20;

protected void protectedMethod() {
System.out.println("This is a protected method");
}
}

class SubExample extends ProtectedExample {
public void display() {
System.out.println(protectedVariable); // 访问protected变量
protectedMethod(); // 调用protected方法
}
}

class Test {
public static void main(String[] args) {
SubExample example = new SubExample();
example.display(); // 可以通过子类访问protected成员
}
}

在这个例子中,protectedVariableprotectedMethod 可以被 SubExample 访问,但不能被其他包中的类直接访问。

3. default 修饰符

当一个类的成员没有修饰符时,即是使用了默认访问级别,只能在同一个包中访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class DefaultExample {
int defaultVariable = 30; // 默认访问权限

void defaultMethod() {
System.out.println("This is a default method");
}
}

class Test {
public static void main(String[] args) {
DefaultExample example = new DefaultExample();
System.out.println(example.defaultVariable); // 访问default变量
example.defaultMethod(); // 调用default方法
}
}

在这个示例中,defaultVariabledefaultMethod 可以在同一个包中的类中访问,但如果想从不同包访问时就不可行了。

4. private 修饰符

private 修饰符使得成员只能被定义它的类访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class PrivateExample {
private int privateVariable = 40;

private void privateMethod() {
System.out.println("This is a private method");
}

public void accessPrivate() {
System.out.println(privateVariable); // 通过公有方法访问私有变量
privateMethod(); // 通过公有方法调用私有方法
}
}

class Test {
public static void main(String[] args) {
PrivateExample example = new PrivateExample();
example.accessPrivate(); // 访问私有成员的方法
// System.out.println(example.privateVariable); // 访问不到,会报错
}
}

在这个示例中,privateVariableprivateMethod 无法被其他类直接访问,只有通过 accessPrivate 方法才能访问。

访问控制的总结

通过上述例子,我们可以总结出每种修饰符的访问规则及其适用场景:

  • 使用 public 修饰符时,成员对所有类可见,适合于 API 接口。
  • 使用 protected 修饰符时,成员仅对同包类和子类可见,适合于继承。
  • 使用 default 修饰符时,成员仅对同包类可见,适合于包内部逻辑。
  • 使用 private 修饰符时,成员仅对类内部可见,适合于隐藏实现细节,增强封装性。

结语

了解和合理使用访问控制修饰符是进行面向对象编程的基础之一。通过控制访问权限,可以保护数据,并确保类的封装性。在接下来的章节中,我们将探讨Java中常用的类,字符串类的使用及其特性。

27 面向对象编程基础之访问控制修饰符

https://zglg.work/java-zero/27/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论