访问权限控制:指的是本类及本类内部的成员(成员变量、成员方法、内部类)对其他类的可见性,即这些内容是否允许其他类访问。

访问权限本类本包的类子类非子类的外包类
public
protected
default
private

由此可见,访问权限大小:public > protected > default(包访问权限) > private。

1)public:所修饰的类、变量、方法,在内外包均具有访问权限。

2)protected:这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问的。

3)包访问权限(default):只对同包的类具有访问的权限,外包的所有类都不能访问。

4)private:私有的权限,只对本类的方法可以使用。

注意:当某个成员能被所有的子类继承,但不能被外包的非子类访问,就是用protected;

         当某个成员的访问权限只对同包的类开放,包括不能让外包的类继承这个成员,就用包访问权限。

访问权限控制的使用场景

1)外部类的访问控制

外部类(外部接口)是相对内部类(也称为嵌套类)、内部接口而言的。外部类的访问控制只能是这两种:public、default。

2)类里面的成员的访问控制

类里面的成员分为三类:成员变量、成员方法、成员内部类(内部接口)

类里面的成员的访问控制可以是四种,也就是可以使用所有的访问控制权限。

3)抽象方法的访问权限

普通方法是可以使用四种访问权限的,但是抽象方法是有一个限制:不能使用private来修饰,即抽象方法不能是私有的,否则,子类就无法继承实现抽象方法。

4)接口成员的访问权限

接口由于其特殊性,所有成员的访问权限都规定的死死的。

  • 变量:public static final
  • 抽象方法:public abstract
  • 静态方法:public static 
  • 内部类、内部接口:public static 

5)构造器的访问权限

构造器的访问权限可以是以上四种权限中的任意一种:

1、采用 private:一般是不允许直接构造这个类的对象,再结合工厂方法(static方法),实现单例模式。注意:所有子类都不能继承它。
2、采用包访问控制:比较少用,这个类的对象只能在本包中使用,但是如果这个类有static 成员,那么这个类还是可以在外包使用;(也许可以用于该类的外包单例模式)。
注意:外包的类不能继承这个类;
3、采用 protected :就是为了能让所有子类继承这个类,但是外包的非子类不能访问这个类;
4、采用 public :对于内外包的所有类都是可访问的;

 posted on 2019-02-27 21:18  会飞的金鱼  阅读(558)  评论(0)    收藏  举报