Java | 访问修饰符

87 阅读2分钟

一、public

  • public访问修饰符具有最大的访问权限,可以被所有的类访问,无论它们在同一个包还是不同的包中。
  • 如果一个类的成员(字段或方法)被声明为public,那么这个成员可以被任何其他类访问。

demo

public class PublicClass {
    public int publicField = 10;
    public void publicMethod() {
        System.out.println("这是一个public方法");
    }
}
public class AccessPublicDemo {
    public static void main(String[] args) {
        PublicClass publicClass = new PublicClass();
        System.out.println("公共字段值: " + publicClass.publicField); // 可以访问public字段
        publicClass.publicMethod(); // 可以调用public方法
    }
}

二、private

  • private访问修饰符是最严格的访问级别,它只能在声明它的类内部访问。
  • 私有成员不能被同一个包中的其他类访问,也不能被不同包中的类访问。

demo

public class PrivateClass {
    private int privateField = 20;
    private void privateMethod() {
        System.out.println("这是一个private方法");
    }
}
public class AccessPrivateDemo {
    public static void main(String[] args) {
        PrivateClass privateClass = new PrivateClass();
        // System.out.println("私有字段值: " + privateClass.privateField); // 编译错误,不能访问private字段
        // privateClass.privateMethod(); // 编译错误,不能调用private方法
    }
}

三、protected

  • protected访问修饰符允许在声明它的类内部、同一个包中的其他类以及不同包中的子类访问。
  • 如果一个成员(字段或方法)被声明为protected,它对包是可见的,并且对所有的子类也是可见的。

demo

public class ProtectedClass {
    protected int protectedField = 30;
    protected void protectedMethod() {
        System.out.println("这是一个protected方法");
    }
}
public class AccessProtectedDemo extends ProtectedClass {
    public static void main(String[] args) {
        AccessProtectedDemo accessProtectedDemo = new AccessProtectedDemo();
        System.out.println("保护字段值: " + accessProtectedDemo.protectedField); // 可以访问protected字段
        accessProtectedDemo.protectedMethod(); // 可以调用protected方法
    }
}

四、默认(没有修饰符)

  • 如果没有访问修饰符(有时称为“包私有”),则该成员可以被同一包中的任何其他类访问,但不能被外部包中的类访问。
  • 这是一种介于publicprivate之间的访问级别。

demo

class DefaultClass {
    int defaultField = 40;
    void defaultMethod() {
        System.out.println("这是一个默认方法");
    }
}
public class AccessDefaultDemo {
    public static void main(String[] args) {
        DefaultClass defaultClass = new DefaultClass();
        System.out.println("默认字段值: " + defaultClass.defaultField); // 可以访问默认字段
        defaultClass.defaultMethod(); // 可以调用默认方法
    }
}

以上就是本次分享的所有内容,感兴趣的朋友点个关注呀,感谢大家啦~