• Java访问权限


    public > protected > default > private

    • public:该成员可以被任意包下,任意类的成员进行访问;
    • protected:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问,还可以被它的子类访问;
    • defalut:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问;
    • private:该成员可以被该类内部成员访问。
    访问权限 本类 本包的类 本包的子类 外包的子类 外包的类
    public
    protected
    default
    private

    上代码:Java访问权限.zip

    //文件结构
    Test
    |-- src
       |-- cat --------猫猫包
          |-- Kit -----本包的子类
          |-- Kitt ----本包的类
          |-- Kitty ---本类
       |-- dog --------狗狗包
          |-- Ki ------外包的子类
          |-- Puppy ---外包的类
    

    本类

    // 本类
    package cat;
    
    public class Kitty {
        public static String catA = "catA";
        protected static String catB = "catB";
        static String catC = "catC";
        private static String catD = "catD";
    
        public static void main(String[] args) {
            // OK
            System.out.println(catA);
            // OK
            System.out.println(catB);
            // OK
            System.out.println(catC);
            // OK
            System.out.println(catD);
        }
    }
    

    本包的类

    // 本包的类
    package cat;
    
    public class Kitt {
        public static void main(String[] args) {
            // OK
            System.out.println(Kitty.catA);
            // OK
            System.out.println(Kitty.catB);
            // OK
            System.out.println(Kitty.catC);
            // ERROR, 'catD' has private access in 'cat.Kitty'
            System.out.println(Kitty.catD);
        }
    }
    

    本包的子类

    // 本包的子类
    package cat;
    
    public class Kit extends Kitty {
        public static void main(String[] args) {
            // OK
            System.out.println(catA);
            // OK
            System.out.println(catB);
            // OK
            System.out.println(catC);
            // ERROR, 'catD' has private access in 'cat.Kitty'
            System.out.println(catD);
        }
    }
    

    外包的子类

    // 外包的子类
    package dog;
    
    import cat.Kitty;
    
    public class Ki extends Kitty {
        public static void main(String[] args) {
            // OK
            System.out.println(catA);
            // OK
            System.out.println(catB);
            // ERROR, 'catC' is not public in 'cat.Kitty'. Cannot be accessed from outside package
            System.out.println(catC);
            // ERROR, 'catD' has private access in 'cat.Kitty'
            System.out.println(catD);
        }
    }
    

    外包的类

    // 外包的类
    package dog;
    
    import cat.Kitty;
    
    public class Puppy {
        public static void main(String[] args) {
            // OK
            System.out.println(Kitty.catA);
            // ERROR, 'catB' has protected access in 'cat.Kitty'
            System.out.println(Kitty.catB);
            // ERROR, 'catC' is not public in 'cat.Kitty'. Cannot be accessed from outside package
            System.out.println(Kitty.catC);
            // ERROR, 'catD' has private access in 'cat.Kitty'
            System.out.println(Kitty.catD);
        }
    }
    

    逐行注释,基本上也没啥好解释的

  • 相关阅读:
    Math对象
    MDN中的对象原型
    构造函数的静态成员和实例成员
    js对象的九大特点
    对象数据的使用方法
    创建对象的所有方式
    Linux下gcc编译器的使用
    Linux vim环境设置
    Linux下is not in the sudoers file解决方法
    mySQL相关函数的使用
  • 原文地址:https://www.cnblogs.com/Subaru/p/15494676.html
Copyright © 2020-2023  润新知