java中public,protected,friendly,private访问控制分析



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:
同包可访问,不同包不能访问;