zoukankan      html  css  js  c++  java
  • 访问控制权限

    访问控制权限
        1.1 访问控制权都有哪些?
            4个
            private 私有
            protected 受保护的
            public 公开
                         默认
            
        1.2 以上的4个访问控制权限:控制的范围是什么?
            private 表示私有的,只能在本类中访问。
            public 表示公开的,在任何位置都可以访问。
            protected表示只能在本类、同包、子类中访问。
            “默认”表示只能在本类,以及同包下访问。
        
        1.3 访问控制权限修饰符可以修饰什么?
            属性(4个都可以用)
            方法(4个都可以用)
            类(public和默认能用,其他不行。)
            接口(public和默认能用,其他不行。)
            ......
        
        访问控制修饰符            本类            同包            子类            任意位置
        ----------------------------------------------------------
        public                            可以            可以            可以            可以
        protected                        可以            可以            可以            不行
        默认                                可以            可以            不行            不行
        private                            可以            不行             不行            不行
        
        这个不要死记硬背,自己下去之后编写代码自己测试。
        范围从大到小排序:public > protected > 默认 > private
     
    测试类1:注意看包路径
    package com.javaSe;
    
    
    import javax.print.attribute.UnmodifiableSetException;
    
    
    public class Test01 {
        public static void main(String[] args) {
            User user = new User();
            // Error:(8, 32) java: id 在 com.javaSe.User 中是 private 访问控制
            // private 修饰的元素只能在本类中使用 需要getter and setter方法
            // System.out.println(user.id);
            System.out.println(user.age);
            System.out.println(user.weight);
            System.out.println(user.name);
        }
    }

    测试类2:注意看包路径

    package com.javaSe;
    
    
    public class User {
        // 给一些属性
        // 私有的
        private int id;
        // 受保护的
        protected int age;
        // 公开的
        public int weight;
        // 什么都没有 默认的
        String name;
    
    
        //方法
        public void m1(){}
        private void m2(){}
        protected void m3(){}
        void m4(){}
    
    
        // 静态方法也可以
        public static void x(){}
        private static void y(){}
        protected static void z(){}
        static void k(){}
    }
    
    
    // 错误:此处不允许使用修饰符private
    /*private class MyClass1{
    
    
    }*/
    
    
    // 错误:此处不允许使用修饰符protected
    /*protected class MyClass1{
    
    
    }*/

    测试类3:注意看包路径

    package com.javaSe2;
    import com.javaSe.*;
    
    
    import javax.print.attribute.UnmodifiableSetException;
    
    
    public class Test02 {
        public static void main(String[] args) {
            User user = new User();
    
    
            // Error:(12, 32) java: age 在 com.javaSe.User 中是 protected 访问控制
            //System.out.println(user.age);
            // Error:(14, 32) java: name在com.javaSe.User中不是公共的; 无法从外部程序包中对其进行访问
            //System.out.println(user.name);
        }
    }

    测试类4:注意看包路径

    package com.javaSe3;
    import com.javaSe.User;
    
    
    public class Vip extends User {
        public void shopping(){
            System.out.println(this.age);
            // Error:(7, 32) java: name在com.javaSe.User中不是公共的; 无法从外部程序包中对其进行访问
            // System.out.println(this.name);
        }
    }
  • 相关阅读:
    SourceTree 跳过登陆
    input type="file"获取文件名方法
    Chrome浏览器安装vue-devtools插件
    设置文本超出既定宽度隐藏,并显示省略号
    node安装express时找不到pakage.json文件;判断安装成功?
    NoSQL:redis缓存数据库
    NoSQL:Linux操作memcached
    Python:迭代器
    Python函数篇:装饰器
    Python面向对象篇之元类,附Django Model核心原理
  • 原文地址:https://www.cnblogs.com/xlwu/p/13127178.html
Copyright © 2011-2022 走看看