修饰符的使用

1、单例模式的应用

既然要保证类有且仅有一个实例,就需要其他的类不能实例化该类。因此,需要将构造方法设置成私有的,即使用private关键字修饰。同时,在类中提供一个静态方法,该方法的返回值是该类的一个实例。这样就只能使用该方法来获得类的实例了,从而保证了唯一性。

提示:必须使用静态方法来提供类的实例,否则是不能实例化该类的。

 

2、祖先的止痒药方

Java中一共有4种访问权限限定符:public、protected、默认和private。访问权限限定符可以用来修饰类、域和方法。protected关键字用于在继承时控制可见性。各种修饰符的范围如表1所示:

表1  访问权限限定符的可见范围

 

说明:如果没有其他3个修饰符,则采用默认修饰符修饰。

 

2、统计图书的销售量

对于普通域而言,它是针对对象的,即每个对象可以有自己的一份普通域拷贝,它可以随意进行修改而不会对其他对象产生影响。对于static修饰的域而言,它是针对类的,即该类的全部对象共享一个域,此时任何对象对其的修改都会影响到其他对象的这个域。

注意:static还可以修饰方法和块,但不要用static修饰类,这没有任何意义。

 

3、汉诺塔问题求解

为了将N个盘子从A移动到C,需要先将第N个盘子上面的N-1个盘子移动到B上,这样才能将第N个盘子移动到C上。同理,为了将第N-1个盘子从B移动到C上,需要将N-2个盘子移动到A上,这样才能将第N-1个盘子移动到C上。通过递归就可以实现汉诺塔问题的求解。其最少移动次数为2n-1。

 

4、不能重写的方法

final可以用来修饰类、域和方法。修饰类表示该类不可被继承,即不能创建该类的子类。修饰域表示该域在初始化之后就不能被修改,通常与static组合使用来创建常量。修饰方法表示该方法不能被重写。总之,只要记住final表示的是不可变的意思就可以了。

说明:在IDE中,如果用户想重写final方法则会显示错误信息进行提示。