Java中的访问控制符有四种:public、protected、default、private。它们的作用如下表:
public表示全部开放,所有地方的类、子类都可以直接访问、覆盖,这个很好理解。
protected表示受保护,记住一点,对于同一个包内的类,包括派生出的子类,它相当于public。另外对于包外的派生出的子类,它也相当于public。
defalut就是没有修饰符,被称为友好的。实际上它比protected还要还要更严格一点。在同一个包内,它也相当于是public。但是对于包外,它相当于private,这就是它比protected严格的地方。
private表示完全封闭,除了本类,其它任何地方都不可访问,不可见。这个也很好理解。
示例代码:
package com.zhangxf.test;
public class Circle {
private static float PIE = 3.14f;
private float r = 0f;
// 完全公开,谁都可以访问、任何地方的子类都可以覆盖
public float getR() {
return r;
}
public void setR(float r) {
this.r = r;
}
// 受保护的,相同包内的所有类,当然包括继承类,还有不同包内的继承类都可以访问
protected float getZhouChang() {
return 2 * PIE * r;
}
// 默认访问控制。对于相同包内的类,包括继承类,它相当于public。对于不同包内的类,它相当于private
float getMianJi() {
return mianJi();
}
// 私有的,除了类内的成员可以访问,其它一一概不允许
private float mianJi() {
return PIE * r * r;
}
}