Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
-
default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
public : 对所有类可见。使用对象:类、接口、变量、方法
-
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
1、如果一个类的成员变量或成员方法被设置为private,则该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的
如果设置为public,则可以在本类,子类和其他包的类中使用
2、如果一个类的权限被设置为private,那么这个类将会隐藏其内的所有数据,以免用户直接访问它
使用public则可以访问
如果一个类使用的是protected,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法
总结:
-
public和protected修饰的类可以被子类访问
-
如果子类与父类不在同一个包内,则使用public才可以使子类访问父类
-
如果父类不允许通过继承产生的子类访问它的成员变量,那么必须使用private声明父类中的这个成员变量
注:如果声明类的时候没有使用权限修饰符,则这个类预设为 包存取范围,只有一个包内的类才可以调用这个类的成员变量或成员方法
类的权限设定会约束类成员的权限设定
例:
class Any{
public void dostring(){
.......
}
}
等同于:
class Any{
void dostring(){
.......
}
}