• 【Java】权限修饰符


    目录

    权限修饰符

    权限修饰符-示例代码


    权限修饰符

    Java有四种访问权限,其中三种有访问权限修饰符,分别为 privatepublic protected,还有一种不带任何修饰符:

    • private:Java语言中对访问权限限制的最窄的修饰符,一般称之为”私有的“。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许挎包访问。
    • default:即不加任何访问修饰符,通常称为”默认访问模式“,该模式下,只允许在同一个包中进行访问。
    • protected:介于public 和 private 之间的一种访问修饰符,一般称之为”保护形“。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
    • public:Java语言中访问限制最宽的修饰符,一般称之为”公共的“。被其修饰的类、属性以及方法 不仅可以跨类访问,而且允许跨包(package)访问。
    权限修饰符可以使用在 方法/属性/类
    权限修饰符同一个类同一个包不同包的子类不同包的非子类
    private(私有)×××
    default(默认)××
    protected(受保护)×
    public(公开)

    开发使用的次数排名:private > public > protected > default

    权限修饰符-示例代码

    层级结构如下:

    下面的代码注释,就说明访问不到 报错

    Parent.java

    1. package com.面向对象.Demo10;
    2. public class Parent {
    3. private int private_Age; // 当前类
    4. protected int protect_Age; // 同一个包/不同包的子类
    5. public int public_Age; //同一个包/不同包
    6. int default_Age; //同一个包
    7. /**
    8. * 权限修饰符(加在 方法/属性/类)
    9. * 1.public
    10. * 2.private 只能在本类中访问
    11. * 3.default
    12. * 4.protected
    13. */
    14. public void public_a1() {
    15. }
    16. private void private_a2() {
    17. }
    18. // default void deafult_a3(){} //default方法前面不需要加default,报错
    19. void default_a3() {
    20. }
    21. protected void protected_a4() {
    22. }
    23. public static void main(String[] args) {
    24. Parent parent = new Parent();
    25. parent.private_a2(); // 只能本类访问
    26. parent.default_a3(); // 同一个包/类下可以访问
    27. parent.protected_a4(); // 同一个包/类,不同包的子类 可以访问
    28. parent.private_Age = 10;
    29. parent.protect_Age = 10;
    30. parent.public_Age = 10;
    31. parent.default_Age = 10;
    32. }
    33. }

    Demo01.java

    1. package com.面向对象.Demo10;
    2. public class Demo01 {
    3. public static void main(String[] args) {
    4. Parent parent = new Parent();
    5. // parent.privat_a2(); //private只可以在同类中访问,这里访问不到
    6. parent.default_a3(); // 同一个包/类下可以访问
    7. parent.protected_a4(); // 同一个包/类,不同包的子类 可以访问
    8. // parent.private_Age = 10; //只能同一个类
    9. parent.protect_Age = 10;
    10. parent.public_Age = 10;
    11. parent.default_Age = 10;
    12. }
    13. }

    Demo02.java

    1. package com.面向对象.Demo11;
    2. import com.面向对象.Demo10.Parent;
    3. public class Demo02 extends Parent{
    4. // 不同包的非子类
    5. public static void main(String[] args) {
    6. Parent parent = new Parent();
    7. parent.public_a1();
    8. // parent.private_a2(); // private只可以在同类中访问,这里访问不到
    9. // parent.default_a3(); // 只能在同一个包/类下可以访问,这里访问不到
    10. // parent.private_Age = 10; // 只能同一个类
    11. // parent.protect_Age = 10; //同一个包/不同包的子类
    12. parent.public_Age = 10;
    13. // parent.default_Age = 10; // 同一个包
    14. }
    15. // 不同包的子类
    16. public void test(){
    17. protected_a4(); // 不同包的子类(同一个包/类,不同包的子类 可以访问)
    18. // private_Age = 10; //同一个类
    19. protect_Age = 10; //同一个包/不同类的子类
    20. public_Age = 10; //公开
    21. // default_Age = 10; // 同一个包
    22. }
    23. }

    下一篇文章:继承练习

  • 相关阅读:
    LeetCode 每日一题 2022/8/15-2022/8/21
    程序员周末都干些什么?
    短视频账号如何提高权重?三个小技巧来帮忙
    java算法收藏
    [附源码]SSM计算机毕业设计学校缴费系统JAVA
    MFC web文件 CHttpFile的使用初探
    Java对List的操作
    突破神奇的Cloudflare防火墙
    实战:如何编写一个 OpenTelemetry Extensions
    Verlog-串口发送-FPGA
  • 原文地址:https://blog.csdn.net/qq_57268251/article/details/133470302