java中public,protected,friendly,private访问控制分析。
package com.fn.pa;
public class A {
protected int
a=0; //这里可以将protected改为private,public以及空来进行测试;
public static void main(String[] args) {
A a=new A();
System.out.println(a.a);
}
}
package com.fn.pa;
import
com.fn.pb.C;
public class B extends A {
void f(){
a=11;
}
public static void main(String[] args) {
B b=new
B();
A a=new A();
C c=new C();
System.out.println(c.a);
System.out.println(a.a);
System.out.println(b.a);
}
}
package com.fn.pa;
public class
D {
public static void main(String[] args) {
// TODO
Auto-generated method stub
A a=new A();
a.a=11;
System.out.println(a.a);
}
}
package com.fn.pb;
import
com.fn.pa.*;
public class C extends A {
void f()
{
a=10;
}
public static void main(String[] args) {
C c =
new C();
A a=new A();
B b=new B();
System.out.println(a.a); //不可见的,出错
System.out.println(c.a);
System.out.println(b.a); //不可见的,出错
}
}
package com.fn.pb;
import
com.fn.pa.A;
public class E {
public static void main(String[]
args) {
A a=new A();
System.out.println(a.a);
//不可见的,出错
}
}
总结:
public: 所有类都可访问;
private:
只有已类才可访问;
protected:
子类:成员方法中都能访问(不管同包还是不同包);
friendly:
同包可访问,不同包不能访问;