java final 关键字
在java中被final修饰之后就不可改变,final可以修饰变量,类,方法。若果将任何参数用final修饰则不可改变它的值,即使是形式参数也不可改变
1.final修饰变量,一旦一个变量被final修饰。就禁止改变该变量的值
class practice {
static public void main(String [] args){
final int x = 5;
x += 3;//compile time error:must not change
System.out.println(x);
}
}
2.final修饰的方法禁止被重写,但是可以继承
package exercises;
class Student{
final void run(){
System.out.println("Students....");
}
}
class Middle extends Student{
/* void run(){
System.out.println("Middle....");
}*/
//error,final 修饰的方法禁止重写
}
public class ex1 {
public static void main(String[] args) {
Middle m = new Middle();
m.run();//但是,final修饰的方法可以被继承
}
}
运行结果
Students....
Process finished with exit code 0
3.final修饰的类禁止继承
package exercises;
final class Student{
void run(){
System.out.println("Students....");
}
}
class Middle extends Student{//error ,final修饰的类不能被继承
void run(){
System.out.println("Middle....");
}
}
public class ex1 {
public static void main(String[] args) {
Middle m = new Middle();
m.run();
}
}
4。空白final变量
空白final变量就是没有值的final变量称为空白变量只能在构造函数中初始化,,一旦被初始化,禁止更改他的值,空白变量在一些情况下很有用,比如下例学生的学号
package exercises;
class Student{
final int id;//声明空白fina变量,只能在构造函数中被初始化
Student(int id){
this.id = id;
}
}
public class ex1 {
public static void main(String[] args) {
Student s = new Student(34);
}
}