访问控制在OOP中,尤其是封装的时候很重要,这些修饰符能够控制哪里属性方法能够被哪些类访问,还能保证哪些属性方法不让哪些类访问,保证数据不轻易被非法破坏,java主要使用public,protected,private以及默认值这四个修饰符来控制。

1 类的访问控制

这种比较简单,一般两种:public和默认不带修饰符的两种情况

1.1 public 类

这种类是共有的,可以被所有其他的类访问到;如果访问的类在同一个包之中,可以直接使用,不用import,否则需要import。

一般如果类中定义了一些常用的方法,最好声明为public。

1.2 default 类

即不加修饰符的类,只能在同一个包之中访问,不能跨包(class cannot be resolved to a variable),也成为包访问性。

2.类中属性和方法的访问控制

注意一点:可以访问到这个类,但是不一定能访问到它的属性和方法。因为类中属性和方法也进行了访问控制。属性和方法的访问都是四种:public,protect,private,default。

2.1 public修饰

和类中修饰的意义一样,如果属性和方法是public,则任意类都可以访问到。但是一般情况下,不推荐属性定义为public,这样有可能会破坏数据,而对于一些对外提供的方法,应该设置成public的。

2.2 default 修饰

也叫做Package access,顾名思义:就是只能在同一个包中的类才能访问,外部的包不能访问。

2.3 private 修饰

只能在该类中访问,不能在其它类,更不能跨包。这样做到目的是为了防止随意访问带来的危害(推荐)。

2.4 protected 修饰

如果设置为private的话,那么子类中也不能访问该变量 。如果需要在中访问该属性,可以使用protected修饰。这时子类(跨包也可以),相同包中的都可以访问。

如果是跨包子类,那么只能通过子类引用的方式来访问父类的protected: