Java中private、protected、public和default的访问权限控制
访问权限控制的修饰符有private、protected和public,这些都是java关键字,用来修饰成员变量和方法,下面将介绍各个修饰符的作用。
先给大家看下访问权限控制的一览图
关键字 | 同类 | 同包 | 子类 | 外包 |
---|---|---|---|---|
private | √ | × | × | × |
default | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
private
用private修饰的成员变量和方法称为私有变量和私有方法。它修饰的成员变量或者方法只能在本类中可以访问,这是一种封装思想的体现。例如,大多数成员变量都是private修饰的,它们不希望被其他任何外部类访问。
default:
不用private、protected和public修饰的成员变量和方法统称为友好变量和友好方法(friendly)。它是针对同一包访问而设计的,任何处于同一包下的接口、类、异常等,都可以相互访问,对于不同包中的类,即使使用import语句导入相应类并创建对象后,也无法使用。
protected
用protected修饰的成员变量和方法称为受保护的成员变量和方法。它修饰的成员变量或方法在同一包中创建的类对象都可以访问。protected和friendly关键字的区别在于对不同包中的类,使用import语句导入相应类并创建对象后是可以使用。
public
用public修饰的成员变量和方法称为共有变量和共有方法。它具有最大的访问权限,可以访问任何一个在src下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。
- 总结
public:可以被所有其他类所访问
protected:自身、子类及同一个包中类可以访问
default:同一包中的类可以访问,声明时不加修饰符,默认为friendly。
private:只能被自己访问和修改