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*/
packagecnblogs.myPack;public classAsk {public String s1 = "我是公共";
String s2= "我是友好";protected String s3 = "我是受保护";private String s4 = "我是私有";public voidspeak(String s) {
System.out.println(s);
}public static voidmain(String args[]) {
Ask ask= newAsk();
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*/
packagecnblogs.myPack;public classE {public static voidmain(String args[]) {
Ask ask= newAsk();
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*/
packagecnblogs.temp;importcnblogs.myPack.Ask;public class E extendsAsk {public static voidmain(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*/
packagecnblogs.com;importcnblogs.myPack.Ask;public classE{public static voidmain(String args[]) {
Ask ask= newAsk();
ask.speak(ask.s1);
ask.speak(ask.s2);
ask.speak(ask.s3);
ask.speak(ask.s4);
}
}
由此可见,在不同包非子类中,只能访问public。
相关文章暂无相关文章