java 权限控制

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 protected
fucntion of public


Process 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();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值