对比public protected default private 访问范围
package test3;public class A {public String public_str = "A_public_str";protected String protected_str = "A_protected_str";String default_str = "A_default_str";private String private_str = "A_private_str";public void access(){System.out.println("同包下,本类中,调用本类(A类)属性,访问情况如下:");System.out.println(public_str);System.out.println(protected_str);System.out.println(default_str);System.out.println(private_str);}}package test3;public class B extends A{public void access(){System.out.println("同包,子孙类关系,继承A类,调用A类属性,访问情况如下:");System.out.println(super.public_str);System.out.println(super.protected_str);System.out.println(super.default_str);System.out.println("private_str 无法访问");}}package test3;public class C {A a = new A();public void access(){System.out.println("同包下,非子孙类关系,C类中new一个A类对象,调用A类属性,访问情况如下:");System.out.println(a.public_str);System.out.println(a.protected_str);System.out.println(a.default_str);System.out.println("private_str 无法访问");}}?package test4;import test3.A;public class D extends A{public void access(){System.out.println("不同包,继承A类,调用A类属性,访问情况如下:");System.out.println(super.public_str);System.out.println(super.protected_str);System.out.println("default_str 无法访问");System.out.println("private_str 无法访问");}}?package test4;import test3.A;public class E {A a= new A();public void access(){System.out.println("不同包,非子孙类关系,调用A类属性,访问情况如下:");System.out.println(a.public_str);System.out.println("protected_str 无法访问");System.out.println("default_str 无法访问");System.out.println("private_str 无法访问");}}?package test5;import test3.A;import test3.C;import test3.B;import test4.D;import test4.E;public class Main {public static void main(String[] args) {A a = new A();B b = new B();C c = new C();D d = new D();E e = new E();System.out.println("对比public protected default private 访问范围:");System.out.println("A类访问情况:");a.access();System.out.println(" ");System.out.println("B类访问情况:");b.access();System.out.println(" ");System.out.println("C类访问情况:");c.access();System.out.println(" ");System.out.println("D类访问情况:");d.access();System.out.println(" ");System.out.println("E类访问情况:");e.access();System.out.println(" ");}}?结果对比public protected default private 访问范围:
A类访问情况:
同包下,本类中,调用本类(A类)属性,访问情况如下:
A_public_str
A_protected_str
A_default_str
A_private_str
B类访问情况:
同包,子孙类关系,继承A类,调用A类属性,访问情况如下:
A_public_str
A_protected_str
A_default_str
private_str 无法访问
C类访问情况:
同包下,非子孙类关系,C类中new一个A类对象,调用A类属性,访问情况如下:
A_public_str
A_protected_str
A_default_str
private_str 无法访问
D类访问情况:
不同包,继承A类,调用A类属性,访问情况如下:
A_public_str
A_protected_str
default_str 无法访问
private_str 无法访问
E类访问情况:
不同包,非子孙类关系,调用A类属性,访问情况如下:
A_public_str
protected_str 无法访问
default_str 无法访问
private_str 无法访问
?