Java 语言 访问修饰符作用域 public protected default private

Java阿木 发布于 24 天前 4 次阅读


摘要:

在Java编程语言中,访问修饰符是用于控制类、方法、变量等成员的访问权限的关键字。本文将围绕Java的四种访问修饰符:public、protected、default(也称为包私有)和private,详细阐述它们的作用域和用法,并通过代码示例进行说明。

一、

Java的访问修饰符是Java语言的一部分,它们用于定义类、方法、变量等成员的可见性。了解访问修饰符的作用域对于编写安全、高效的Java代码至关重要。本文将深入探讨这四种访问修饰符的作用域和它们在代码中的应用。

二、public

public修饰符表示没有任何限制,可以被任何其他类访问。这意味着public成员在类的外部是可见的。

java

public class PublicExample {


public int publicVar = 10;


public void publicMethod() {


System.out.println("This is a public method.");


}


}


在上面的代码中,`publicVar`和`publicMethod`都可以被任何其他类访问。

三、protected

protected修饰符表示成员可以在同一个包内被访问,也可以在继承的子类中被访问,即使子类不在同一个包中。

java

package com.example;

public class ProtectedExample {


protected int protectedVar = 20;


protected void protectedMethod() {


System.out.println("This is a protected method.");


}


}

class SubClass extends ProtectedExample {


public void accessProtected() {


System.out.println("Accessing protected variable: " + protectedVar);


protectedMethod();


}


}


在`SubClass`中,即使它不在`ProtectedExample`所在的包中,也可以访问`protectedVar`和`protectedMethod`。

四、default(包私有)

如果没有指定访问修饰符,成员默认是包私有的。这意味着成员只能被同一个包内的类访问。

java

package com.example;

public class DefaultExample {


int defaultVar = 30; // 默认为包私有


void defaultMethod() {


System.out.println("This is a default method.");


}


}

class AnotherClass {


// AnotherClass和DefaultExample在同一个包中


public void accessDefault() {


DefaultExample example = new DefaultExample();


System.out.println("Accessing default variable: " + example.defaultVar);


example.defaultMethod();


}


}


在上面的代码中,`AnotherClass`可以访问`DefaultExample`的默认成员。

五、private

private修饰符表示成员只能在其所属的类中被访问。这意味着private成员对外部是完全不可见的。

java

public class PrivateExample {


private int privateVar = 40;


private void privateMethod() {


System.out.println("This is a private method.");


}


}

class AnotherClass {


// 无法访问PrivateExample的private成员


public void accessPrivate() {


PrivateExample example = new PrivateExample();


// System.out.println("Accessing private variable: " + example.privateVar); // 这行代码会编译错误


// example.privateMethod(); // 这行代码会编译错误


}


}


在上面的代码中,`AnotherClass`无法访问`PrivateExample`的`privateVar`和`privateMethod`。

六、总结

Java的访问修饰符提供了对类成员访问权限的控制。通过合理使用public、protected、default和private修饰符,可以确保代码的封装性和安全性。了解这些修饰符的作用域对于编写高质量的Java代码至关重要。

本文通过代码示例详细介绍了Java的四种访问修饰符及其作用域,希望对读者有所帮助。在实际开发中,应根据具体需求选择合适的访问修饰符,以实现代码的封装、隐藏和重用。