Java访问修饰符 public private protected

Java 经过修饰符来控制类、属性和方法的访问权限和其余功能,一般放在语句的最前端。例如:前端

public class className {
    // body of class
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
    // body of method
}

Java 的修饰符不少,分为访问修饰符和非访问修饰符。本节仅介绍访问修饰符,非访问修饰符会在后续介绍。java

访问修饰符也叫访问控制符,是指可以控制类、成员变量、方法的使用权限的关键字。web

在面向对象编程中,访问控制符是一个很重要的概念,可使用它来保护对类、变量、方法和构造方法的访问。编程

Java支持四种不一样的访问权限:
修饰符 说明
public 共有的,对全部类可见。
protected 受保护的,对同一包内的类和全部子类可见。
private 私有的,在同一类内可见。
默认的 在同一包内可见。默认不使用任何修饰符。svg

public:公有的

被声明为public的类、方法、构造方法和接口可以被任何其余类访问。
若是几个相互访问的public类分布在不用的包中,则须要导入相应public类所在的包。因为类的继承性,类全部的公有方法和变量都能被其子类继承。spa

protected:受保护的

被声明为protected的变量、方法和构造方法能被同一个包中的任何其余类访问,也可以被不一样包中的子类访问。code

protected访问修饰符不能修饰类和接口,方法和成员变量可以声明为protected,可是接口的成员变量和成员方法不能声明为protected。xml

子类能访问protected修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。对象

private:私有的

私有访问修饰符是最严格的访问级别,因此被声明为private的方法、变量和构造方法只能被所属类访问,而且类和接口不能声明为private。继承

声明为私有访问类型的变量只能经过类中公共的Getter/Setter方法被外部类访问。

private访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

访问控制和继承

请注意如下方法继承(不了解继承概念的读者能够跳过这里,或者点击 Java继承和多态 预览)的规则:
父类中声明为public的方法在子类中也必须为public。
父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
父类中默认修饰符声明的方法,可以在子类中声明为private。
父类中声明为private的方法,不可以被继承。
如何使用访问控制符

访问控制符可让咱们很方便的控制代码的权限: 当须要让本身编写的类被全部的其余类访问时,就能够将类的访问控制符声明为 public。 当须要让本身的类只能被本身的包中的类访问时,就能够省略访问控制符。 当须要控制一个类中的成员数据时,能够将这个类中的成员数据访问控制符设置为 public、protected,或者省略。