访问控制权限

访问控制权限
    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);
    }
}

 

posted @ 2020-06-14 21:42  xlwu丶lz  阅读(299)  评论(0编辑  收藏  举报