首页 > 代码库 > Effective Java之类的访问

Effective Java之类的访问

  类的访问性越小越好,也就是够用就行,不同的包以及模块之间,只预留足够功能使用的api接口,其他的所有功能实现的细节就封装在包的内部,这样,代码的可维护性和可扩展性会有较大的提升。那么,java中有哪些访问控制呢?

  一、public:这个就相当于“我家大门常打开”,任何人都可以进入,这当然是相当不安全的。

  二、默认访问权限:这种访问权限相当于只有在相同的包内,类之间才可以互相调用,且调用的方法必须是protected级别及其以上的。

  三、protected:这种是适用于继承的,不管子类在哪个包中,都可以访问。

  四、private:这就相当于宣布是私人财产,不得侵犯了。

  还有一些其他的规则,比如子类继承的方法的访问权限必须不能小于父类的,这样,父类就可以调用子类继承的方法了。

  还有,针对一些线程安全的类,除了采用“同步”的机制外,还可以使用final类,将类中的所有属性都申明为final的,这样相同实例的属性就不会被改变。例子如下:

package demo;public final class FinalTest {    private final int a;    public FinalTest(int a) {        this.a = a;    }    public int getA() {        return a;    }}

  这样,FinalTest中的a属性在不同线程中是不会被改变的。但是不可改变的类也有一定的缺点,如果非要改变FinalTest实例中的属性,那么只有重新创建一个FinalTest的实例,这样的话对性能有一定的影响。

  总之,在类设计时,只向外开放应该开放的接口,封装类内部实现的细节,这一点说起来容易,但实践起来,需要大量的经验。

Effective Java之类的访问