Java 函数的访问权限修饰符之在不同类中使用的规则

在不同类中使用 java 函数时,遵循以下访问权限规则:默认访问权限仅限于同一包内的类。包可见性与默认访问权限相同,但适用于同一模块中的所有类。受保护的访问权限仅限于子类和同一包中的类。公共访问权限在所有类中可见。

Java 函数的访问权限修饰符之在不同类中使用的规则

Java 函数的访问权限修饰符之在不同类中使用的规则

Java 中的访问权限修饰符用于控制类、方法和字段的可见性范围。在不同类中使用函数时,需要遵守以下规则:

1. 默认访问权限(无修饰符)

  • 仅在同一包内的类中可见

2. 包可见性(default)

  • 与默认访问权限相同,但适用于同一模块中的所有类

3. protected 访问权限

  • 仅在该类的子类和同一包中的类中可见

4. public 访问权限

  • 在所有类中可见

实战案例

考虑以下代码:

// MySuperClass.java
public class MySuperClass {
    protected void protectedMethod() {
        // ...
    }

    public void publicMethod() {
        // ...
    }
}
// MySubClass.java
public class MySubClass extends MySuperClass {
    // 可访问父类的 protected 和 public 方法
    void <a style='color:#f60; text-decoration:underline;' href="https://www.sxiaw.com/zt/16380.html" target="_blank">access</a>Protected() {
        protectedMethod();
    }

    void accessPublic() {
        publicMethod();
    }
}
// MyOtherClass.java
public class MyOtherClass {
    // 无法访问父类的 protected 或 public 方法
    void accessProtected() {
        // <a style='color:#f60; text-decoration:underline;' href="https://www.sxiaw.com/zt/36569.html" target="_blank">编译错误</a>: protectedMethod() 具有 protected 访问权限,在此包外不可访问
    }

    void accessPublic() {
        // 编译错误: publicMethod() 具有 public 访问权限,但在不同的模块中不可访问
    }
}

在这个示例中,MyOtherClass 无法访问 MySuperClass 中的 protectedMethod()publicMethod(),因为它们不是在同一包中或不是 MySuperClass 的子类。

注意事项

  • 内部类可以访问其外部类的所有成员,无论访问权限修饰符如何。
  • 编译器会检查访问权限,如果违反规则,则会产生编译错误。

以上就是Java 函数的访问权限修饰符之在不同类中使用的规则的详细内容,更多请关注www.sxiaw.com其它相关文章!