今天小编为大家整理了:关于Java中四种访问修饰符的理解
大家一起来看一下吧
四种访问修饰符的介绍
public
public公共的修饰符,被public修饰的类、变量和方法在所在类,相同的包下,其他的包中都可以访问。
protected
protected被保护的修饰符,被protected修饰的类、变量和方法在所在类,相同的包下,和子类中都可以被访问。
default
default默认的修饰符,被default修饰的类、变量和方法在所在类,相同的包下可以访问。
private
private私有的修饰符,被private修饰的类、变量方法只能在所在类中访问。
四种访问修饰符的访问权限表:
1.同一个类下访问
publicStringname="张三";//公共修饰符修饰的变量
protectedStringsex="男";//被保护的修饰符修饰的变量
Stringbirthday="1999-09-09";//默认修饰符修饰的变量
privateintage=18;//私有修饰符修饰的变量
//判断被任何修饰符修饰的变量在同一个类中是否可以访问,在别的类下调用show方法查看是否可以正常调用产生结果即可
publicvoidshow(){
System.out.print(name+"");
System.out.print(sex+"");
System.out.print(birthday+"");
System.out.print(age+"");
}
2.同一个包下访问
publicclassTwo{
publicstaticvoidmain(String[]args){
Oneo=newOne();
//---------------------------------在同一个包下访问--------------------------
System.out.println("----------在同一个包下访问-------------------------");
System.out.print(o.name+"");//public修饰的变量可以访问
System.out.print(o.sex+"");//protected修饰的变量可以访问
System.out.println(o.birthday+"");//default修饰的变量可以访问
//System.out.println(o.age);private修饰的变量不能访问
//------------------------调用show()方法查看在本类下所有被不同修饰符修饰的变量是否可以正常访问
System.out.println("----------------本类下被修饰的变量是否可以正常访问------------------");
o.show();
}
}
在同一个包下访问除了被private修饰的age,其他修饰符修饰的变量均可以正常访问,并且在同一个类下所有修饰符修饰的变量都可以正常访问到。
因此:在同一个包下private修饰的类、变量、方法能在本类中访问,不能在其他类中访问。
在同一个包下public、protected、default修饰的类、变量、方法能在本类和其他类中访问。
3.不同的包下的子类访问
packagecom.miao.test2;
importcom.miao.test1.One;
publicclassThreeextendsOne{
publicstaticvoidmain(String[]args){
Threethree=newThree();
//---------------------------------在不同的包下的子类访问--------------------------
System.out.println("----------在不同的包下的子类访问-------------------------");
System.out.print(three.name+"");//public修饰的变量可以访问
System.out.print(three.sex+"");//protected修饰的变量可以访问
//System.out.println(three.birthday+"");默认修饰符修饰的变量不能访问
//System.out.println(three.age);private修饰的变量不能访问
}
}
在不同的包下的子类访问只有public和protected修饰的类、变量、方法能够访问。
因此:在同一个包下private修饰的类、变量、方法只能在本类中访问,不能在同一个包下的其他类中和不同包下的子类中访问。
default修饰的类、变量、方法能在同一个包下的类中访问,不能不同的包的子类下访问。
public、protected修饰的类、变量、方法能在同一个包下的类、不同包下的子类中访问。
4.不同的包下访问
packagecom.miao.test2;
importcom.miao.test1.One;
publicclassFour{
publicstaticvoidmain(String[]args){
Oneo=newOne();
//---------------------------------在不同的包下访问--------------------------
System.out.println("----------在不同的包下访问-------------------------");
System.out.print(o.name+"");//public修饰的变量可以访问
//System.out.print(o.sex+"");protected修饰的变量不能访问
//System.out.println(o.birthday+"");默认修饰符修饰的变量不能访问
//System.out.println(o.age);private修饰的变量不能访问
}
}
最终结论:
private修饰的类、变量、方法只能在本类中访问。
default(默认修饰符)修饰的类、变量、方法能在同一个包下的类中访问。
protected修饰的类、变量、方法能在同一个包下的类和不同的包下的子类中访问,但不能在不同的包下访问。
public修饰的类、变量、方法能以上的所有情况下访问。