java的访问权限

2020-04-08 16:11:07来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

java的访问权限

一、访问权限

1. 权限简介

java有四种访问权限:public > protected > default > private。

注:protected、private不能修饰类,private不能修饰抽象方法。

2. 权限详情

public ------所修饰的成员,在任何位置均可被访问。

protected -所修饰的成员,能被其子类访问。

default -----所修饰的成员,只能在同包中被访问。

private -----所修饰的成员,只能在本类中被访问。

访问权限 同类 同包 不同包子类 不同包非子类
public ? ? ? ?
protected ? ? ? ×
default ? ? × ×
private ? × × ×

二、权限测试

1. 同类

/*
 * @Author: bpf
 * @FilePath: \Learn in the Internet\Code\java\cnblogs\myPack\Ask.java
 */
package cnblogs.myPack;

public class Ask {
    public String s1 = "我是公共";
    String s2 = "我是友好";
    protected String s3 = "我是受保护";
    private String s4 = "我是私有";

    public void speak(String s) {
        System.out.println(s);
    }

    public static void main(String args[]) {
        Ask ask = new Ask();
        ask.speak(ask.s1);
        ask.speak(ask.s2);
        ask.speak(ask.s3);
        ask.speak(ask.s4);
    }
}

 

 由此可见,在同类中,四种权限均可被访问。

2. 同包

/*
 * @Author: bpf
 * @FilePath: \Learn in the Internet\Code\java\cnblogs\myPack\E.java
 */
package cnblogs.myPack;

public class E {
    public static void main(String args[]) {
        Ask ask = new Ask();
        ask.speak(ask.s1);
        ask.speak(ask.s2);
        ask.speak(ask.s3);
        ask.speak(ask.s4);
    }
}

 

 由此可见,在同包中,四种权限只有private不能被访问。

3. 不同包子类

/*
 * @Author: bpf
 * @FilePath: \Learn in the Internet\Code\java\cnblogs\temp\E.java
 */
package cnblogs.temp;
import cnblogs.myPack.Ask;

public class E extends Ask {
    public static void main(String args[]) {
        Ask father = new Ask();// 使用父类的对象访问
        father.speak(father.s1);
        father.speak(father.s2);
        father.speak(father.s3);
        father.speak(father.s4);

        E child = new E();     // 使用子类的对象访问
        child.speak(child.s1);
        child.speak(child.s2);
        child.speak(child.s3);
        child.speak(child.s4);
    }
}

 

 由此可见,当使用父类创建的对象访问时,只能访问public;当使用子类创建的对象访问时,可以访问public、protected。

4. 不同包非子类

/*
 * @Author: bpf
 * @FilePath: \Learn in the Internet\Code\java\cnblogs\com\E.java
 */
package cnblogs.com;
import cnblogs.myPack.Ask;

public class E{
    public static void main(String args[]) {
        Ask ask = new Ask();
        ask.speak(ask.s1);
        ask.speak(ask.s2);
        ask.speak(ask.s3);
        ask.speak(ask.s4);
    }
}

 

 由此可见,在不同包非子类中,只能访问public。

 


原文链接:https://www.cnblogs.com/bpf-1024/p/12663335.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:使用docker-elk搭建并实践ELK日志分析框架

下一篇:【从零开始学Spring笔记】AOP的注解开发