欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java的访问权限,

来源: javaer 分享于  点击 35026 次 点评:89

java的访问权限,


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。

 

相关文章

    暂无相关文章
相关栏目:

用户点评