final关键字简述
final关键字是在编写java程序中出现频率和很高的关键字,如果想要更好的编写java程序,那么掌握final关键字的运用是非常必要的。让我们先看一下final关键字可以修饰的地方有哪些
final关键字修饰在类上
final关键字修饰在方法上
final关键字修饰在成员变量上
final关键字修饰匿名内部类方法上
鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢。final关键字修饰在类上
当final关键字修饰在类上时代表该类是不可被继承,我们非常熟悉的String、Integer等都是由final修饰类,《java编程思想》里有阐述过String等基本类型的封装类之所以用final修饰就是不希望String类被其他类继承从而改变String类特性。
```java
public final class FinalKeyWordTest {
public FinalKeyWordTest(){}
public void myFinalMethod(){
System.out.println("this final");
}
}
class MyTest1 extends FinalKeyWordTest{ //编译错误 //The type MyTest1 cannot subclass the final class FinalKeyWordTest
}
```
final关键字修饰在方法上
当final修饰在方法上时代表该该方法不允许被覆盖(重写)。《java编程思想》写到:使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
如果想要禁止子类覆盖某一个父类方法,那么使用final去修饰它是最好的办法
public class FinalKeyWordTest { public FinalKeyWordTest(){} public final void myFinalMethod(){ System.out.println("this final"); } } class MyTest1 extends FinalKeyWordTest{ @Override public final void myFinalMethod(){//编译错误 System.out.println("this sub final"); } }