有时候,你不希望别人坐享其成,通过继承你写的类得到他自己所需要的类,怎么办呢?这个时候你就可以在你的class之前加上final这个修饰府,例如public final class test{……},加上了这个修饰符之后,别人在继承这个类的话就会编译出错,提示他这个类不能构建子类。从这我们可以看出,final修饰符和abstract修饰符是不能同时使用的,因为abstract类可以说是专门用来继承的,而final类则不能用于继承。
那么如果是在方法的前面加上final修饰符有什么作用呢?比如说A类中有个声明为final的方法a(){….},那么B继承A的时候,B就不能覆盖方法a(){….},否则编译出错,提示Cannot override the final method from A。此外,如果一个类声明为final类的话,它里面所有的方法都自动成为final类型的。
自然的,你肯定会问,如果一个域申明为final的时候有什么作用?一个属性声明为final之后,你不能在对它重新进行赋值,否则编译报错,The final field ×× cannot be assigned。另外,请注意,类声明为final的时候,仅仅它的方法自动变为final,而属性则不会。