final关键字可用于修饰类,变量和方法,他有“不可更改”和“最终”含义,因此被final关键字修饰的类,变量和方法具有以下的特性。。

1.final修饰的类不能被继承。
2.final修饰的方法不能被子类重写。
3.final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。

1.final关键字修饰类

Java中类被final修饰后,该类将不可以被继承,也就是不能够派生出子类。

final class Animal{

}
class Dog extends Animal{

}

public class test {
    public static void main(String[] args) {
        Dog dog = new Dog();
    }
}

alt

2.final关键字修饰方法

当一个类的方法被final修饰后,这个类将不能重写该方法。但是可以重载。

#当类的方法重写时
class Animal{
    public final void shout(){
    }
}
class Dog extends Animal{
    public void shout(){}
}

public class test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.shout();
    }
}

alt

#当进行对方法重载时
class Animal{
    public final void shout(){
    }
}
class Dog extends Animal{
    public void shout(int i){
        System.out.println("i="+i);
    }
}

public class test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.shout(1);
    }
}

alt

3.final关键字修饰变量

Java中被final修饰的变量被称为常量,它只能被赋值一次,即final修饰的变量一旦被赋值,其值不能改变。

3.1 final关键字修饰局部变量

public class test {
    public static void main(String[] args) {
        final int num=0;  //第一次赋值
        num=10;         //再次赋值报错
        System.out.println("num="+num);
    }
}

alt

3.2 final关键字修饰成员变量

public class test {
    //final修饰的成员变量,必须在声明的同时进行赋值,否则编译报错
    final int m; 
    final int mm=10;
    public static void main(String[] args) {
        //final修饰的局部变量,可以先声明,在进行一次赋值
        final int n;
        n=4;
    }
}

alt