java 中四种访问修饰符的简单认知

四种访问的修饰符分别是 (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:强调大家都可以用;

猜你喜欢

转载自www.cnblogs.com/qingfengdream/p/11306551.html