Java中的作用域的区别
Java中的作用域有 public 、protected、private、default。
public:它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类,接口等,它往往用于对象或类对外的一种接口的形式。
protected:它主要的作用是用来保护子类,它的含义在于子类可以用它修饰的成员,其他的不可以,他相对于传递给子类的一种继承的东西。
private:它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是private修饰符,它不希望被外部类访问。
default:有时候也成为friendly(友元),它是针对本包访问而设计的,任何处于本包下的类,接口,异常等,都可以访问,即使是父类没有用protected修饰的成员也可以。
类内部 | 本包 | 子类 | 外部包 | |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
从上面可以更直观的看到:
- public:可以被其他所有类访问
- protected:可以被自身,子类,以及同一包下的类访问
- default:可以被自身和同一包中的类访问
- private:只可以被自身访问