[访问权限] java中的访问修饰符有哪些,区别是什么?

原创admin 分类:热门问答 1

java中的访问修饰符有哪些,区别是什么
#

Java中的访问修饰符详解:种类、区别与运用

访问修饰符主要用于控制类、成员变量、构造方法和成员函数的访问权限。它们主要有四种类型:publicprotecteddefault(即无关键字,默认修饰符)以及private

1. 访问修饰符的种类及作用范围

  • public:公开访问修饰符。被public修饰的类、变量或方法可以在任何地方被访问,不受包或者类的限制。

  • protected:受保护访问修饰符。protected修饰的元素在同一个包内可以被任意类访问,在不同包下只能被子类访问。

  • default(无关键字):默认访问修饰符。仅在同一包内的其他类中可见,跨包则无法访问。

  • private:私有访问修饰符。private修饰的成员只在其所在的类内部可见,对同一包或其他包中的任何类都是不可见的。

2. 访问修饰符的具体实现

// 示例代码:
package com.example.accessmodifiers;

public class AccessModifiersDemo {
    // 默认访问修饰符
    int defaultVariable;

    // protected访问修饰符
    protected String protectedVariable;

    // private访问修饰符
    private double privateVariable;

    // public访问修饰符
    public void publicMethod() {
        System.out.println("Public method accessed.");
    }

    // 默认访问修饰符的方法
    void defaultMethod() {
        System.out.println("Default method accessed.");
    }

    // protected访问修饰符的方法
    protected void protectedMethod() {
        System.out.println("Protected method accessed.");
    }

    // private访问修饰符的方法
    private void privateMethod() {
        System.out.println("Private method accessed.");
    }
}

// 同一包下的另一个类
class AnotherClassInSamePackage {
    public void accessModifiersTest(AccessModifiersDemo demo) {
        // 可以访问default、protected修饰的内容
        demo.defaultVariable = 10;
        demo.protectedVariable = "Protected";

        // 不能访问private内容
        // demo.privateVariable = 3.14;  // 编译错误

        // 可以调用public、default方法
        demo.publicMethod();
        demo.defaultMethod();

        // 不可以调用protected、private方法
        // demo.protectedMethod();  // 编译错误
        // demo.privateMethod();   // 编译错误
    }
}

// 不同包下的子类
package com.example.anotherpackage;

import com.example.accessmodifiers.AccessModifiersDemo;

public class ChildClass extends AccessModifiersDemo {
    public void childClassAccessTest() {
        // 可以访问protected内容
        protectedVariable = "Child Class Accessed Protected";

        // 不能访问private内容
        // privateVariable = 3.14;  // 编译错误

        // 可以调用public、protected方法
        publicMethod();
        protectedMethod();

        // 不可以调用default、private方法
        // defaultMethod();  // 编译错误
        // privateMethod();   // 编译错误
    }
}

3. 总结与注意事项

  • public提供了最大的访问权限,是对外接口的主要修饰符。
  • protected主要用于实现继承关系中父类与子类之间的数据共享和方法重写。
  • default适用于在同一包内不需要严格控制访问权限的情况,提供了一定程度的封装。
  • private是最严格的访问控制,它确保了类的内部细节不被外部随意访问,增强了程序的安全性和稳定性。

在实际开发中,合理地使用访问修饰符能有效增强代码的封装性,降低耦合度,提高程序的可维护性和安全性。

注意:对于类而言,只有public和默认(无关键字)两种访问级别。如果一个类没有明确指定访问修饰符,则默认为包访问级别,即只能在同一个包内被访问。

猜你喜欢

领取相关Java架构师视频资料

网络安全学习平台视频资料