java 权限控制

来源:互联网 发布:windows toolkit 编辑:程序博客网 时间:2024/06/17 03:41

java中权限控制符有:private(私有权限控制)、friendly(包权限控制)、 protected(继承权限控制), public(共有权限控制)



1. private : 关键字private的意思是,除了包含该成员的类之外, 其他任何类都无法访问这个成员(包括属性, 行为), 由于处于同一个包中的其他类是无法访问private成员的, 因此使用private相当于是隔离自己。


2. 包权限控制 : java中不加任何权限关键词修饰成员、类,则默认为包权限控制, 使用包权限修饰则表示在同一包中的其他类对该成员具有访问权限。


3. protected : 继承权限控制, 表示在同一包中, 以及继承该成员所属类的类具有访问权限。


4. public :公开权限, 使用public修饰的类, 成员,任意其他类成员对其都具有访问权限, 使用public修饰类,表示该类对其他任意类都是可见的, 如果使用包权限修饰则表示只有与该类同包的其他类才是可见的。


package com.mjlf.myBatis.accessControl.user;/** * Created by a123 on 16/12/10. */public class User {    private void showPri(){        System.out.println("function of private");    }    void showPackage(){        System.out.println("function of package control");    }    protected void showPro(){        System.out.println("function of protected");    }    public void showPub(){        System.out.println("fucntion of public");    }}
与User类同包的Test类进行测试:
由于User类中showPri() 方法是private修饰的, 所以在Test中是不可见的, 因此编译报错。
而其他的权限修饰符都具有同包可见性, 所以能正常编译运行, 效果如下
package com.mjlf.myBatis.accessControl.user;/** * Created by a123 on 16/12/10. */public class Test {    public static void main(String[] args){        User user = new User();        user.showPub();//fucntion of public        user.showPro();//function of protected        user.showPackage();//function of package control//        user.showpri(); //编译通不过, 找不到function showpri();    }}
与User不同包的Test测试类
该类中第一个main方法是在Test类没有继承User类时的情况,这时只有showPub()方法能正常编译运行, 其他方法都编译出错, 因为如上所述, 其他方法都只有在同包, 
或是继承类User类的类中才能访问
第二个main方法是在继承User后的情况, 这时showPro方法也能正常执行。
运行结果:
function of protectedfucntion of publicProcess finished with exit code 0
package com.mjlf.myBatis.accessControl.entity;import com.mjlf.myBatis.accessControl.user.User;/** * Created by a123 on 16/12/10. */public class Test  extends User{//    public static void main(String[] args){//        User user = new User();//        user.showPub();//fucntion of public////        user.showPro();//function of protected////        user.showPackage();//function of package control////        user.showpri(); //编译通不过, 找不到function showpri();//    }    public static void main(String[] args){        Test test = new Test();        test.showPro();        test.showPub();    }}



0 0