java中final关键字
一:final关键字的基本用法
java中,final关键字用来修饰类、方法、变量(成员变量和基本变量)。
二:修饰类
1:final修饰的类不能被继承。
2:final修饰的类中的成员变量可以用final修饰,也可以不用final修饰。
3:final修饰类的所有成员方法被隐式指定为final方法。
public final class Person { public Person() { } } class Animal extends Person{ //编译报错 }
三:修饰方法
1:final修饰的方法不能被重写。
2:可以重载多个final修饰的方法。
3:重写的前提是子类继承父类的方法,被private修饰的方法不能被继承,此时在子类定义的同名、同参数的方法与父类final修饰的方法不是重写关系,而是重新定义一个新方法。
public class A { /*因为pblic修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错 public final void getName() { } */ /* 因为被private修饰,子类无法继承此方法,因此子类中getName方法属于重新定义 属于子类本身的方法,编译正常 */ private final void getName() { } } class B extends A{ public void getName() { } }
四:修饰变量
1:final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
2:final修饰基本数据类型,一旦初始化后便不能再改变;final修饰的引用类型,初始化后不能再指向其他对象,但该对象的内容可以发生改变。
3:final修饰一个成员变量,必须要显示初始化。初始化方式有两种:一种在声明变量的时候初始化;另一种声明变量后,在构造方法中赋初始值。
4:当函数的参数声明为final类型时,说明该参数是只读类型,不能对该参数值进行修改。
public class Man { private final int i = 0 ; public Man() { //i=1; 编译报错 final Object o = new Object(); //o = new Object(); 编译报错 } }