访问权限控制(public,protected,private)
- Java中最大权限到最小权限依次为:public,protected,private。
- 类库:类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类。
1.public,接口访问权限。
使用public,意味着public之后的成员声明对每个人都是有用的。
eg:
这里我举个例子:
在一个项目Liu中,我新建了两个包,liusrc和liusrd。其中在liusrc中我建了两个类Cookie.Java和Dinner.java,在liusrd中我建了Lunch.java类。目录如下:
//Cookie类:
package liusrc;
public class Cookie {
public Cookie(){
System.out.println("123456");
}
void bite(){
System.out.println("098765");
}
}
//Dinner类:
package liusrc;
public class Dinner {
public static void main(String[] args){
Cookie x = new Cookie();
x.bite();
}
}
由此Dinner输出:
123456
098765
//Lunch类:
package liusrd;
import liusrc.Cookie; //导包
public class Lunch {
public static void main(String[] args){
Cookie x = new Cookie();
//x.bite(); //不是public不可以访问
/*
*如果我们想要x.bite();可以用,则我们需要将Cookie类的void bite(),设置为
*public void bite()
*/
}
}
由此Lunch输出:
123456
2.private,别人无法访问的权限
即便是处于同一个包内的其他类也是不可以访问private成员的,通俗说就是自己隔离了自己。
3.protected:继承访问权限
protected处理的是继承的概念。只有继承他的类才可以访问他的方法。
eg:
//在liusrc中我建了类Cookie2.Java,其中bite()为protected。
package liusrc;
public class Cookie2 {
public Cookie2(){
System.out.println("abcd");
}
protected void bite(){
System.out.println("qwer");
}
}
//在liusrd中我建了Lunch2类,继承类Cookie2:
package liusrd;
import liusrc.Cookie2;
public class Lunch2 extends Cookie2{
public Lunch2(){
System.out.println("aaaaa");
}
public void sc(){
bite();
}
public static void main(String[] args){
Lunch2 lun = new Lunch2();
lun.sc();
}
}
output:
abcd
aaaaa
qwer
总之而已,三个访问权限可以做这样一个解释:
我们可以把一个文件夹当作一个社区,把每一个类当作每一个人。被public修饰的人是这个社区的民警,当有人遇到困难时,都可以向他寻求帮助;被protect修饰的人可以看作是一个家庭的父亲,只有他的儿子(后代)遇到困难时,他才可以伸出援手;被private修饰的人就是这个社区最自私的人,不管谁都不可以从他那得到任何东西。
本人原创,转载请注明,谢谢!