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