四种访问的修饰符分别是 (private 默认 protected public) 此排序按照访问权限的大小(由小到大)
测试1:本类中进行
package Demo1;
public class Test {
private void show1(){
System.out.println("show1 private");
}
void show2(){
System.out.println("show2 默认");
}
protected void show3(){
System.out.println("show3 protected");
}
public void show4(){
System.out.println("show4 public");
}
public static void main(String[] args) {
Test test = new Test();
test.show1();
test.show2();
test.show3();
test.show4();
}
}
输出结果
show1 private
show2 默认
show3 protected
show4 public
结果表明:在本类中,四种修饰符修饰的方法都可访问。
测试2:同包下的类中
package Demo1;
public class Test2 {
public static void main(String[] args) {
Test test = new Test();
test.show1();
test.show2();
test.show3();
test.show4();
}
}
错误 : java: show1() 在 Demo1.Test 中是 private 访问控制
将test.show1();注释掉
package Demo1;
public class Test2 {
public static void main(String[] args) {
Test test = new Test();
// test.show1();
test.show2();
test.show3();
test.show4();
}
}
结果
show2 默认
show3 protected
show4 public
在子类中
package Demo1;
public class Son extends Test {
public static void main(String[] args) {
Test test = new Test();
// test.show1();
test.show2();
test.show3();
test.show4();
}
}
与test1一样的执行结果
结果表明:同包下的类,除了用private修饰的无法调用,其余的都可调用。
测试3:不同包下的类
package Demo2;
import Demo1.Test;
public class Son extends Test {
public static void main(String[] args) {
Test test = new Test(); //不同包下的其他类
// test.show1();
// test.show2();
// test.show3();
test.show4();
System.out.println("-----------");
Son son = new Son(); //不同包下的子类
// son.show1();
// son.show2();
son.show3();
son.show4();
}
}
结果
show4 public
-----------
show3 protected
show4 public
结果表明:不同包下的子类可调用(protected,public),不同包下的其他类只能调用(public)
总结:
1.private:强调在本类中自己使用;
2.默认:强调在同包下的类中使用;
3.protected:强调给子类使用;
4.public:强调大家都可以用;