Final关键字
final关键字
final关键字可用于修饰类,变量和方法,它有“这是无法改变的”或者“最终”的含义,因此被final修饰的类、变量和方法将具有以下特性:
final修饰的类不能被继承
final修饰的方法不能子类重写
final修饰的变量(成员变量和局部变量)是常量,只能赋值一次
final关键字修饰类
Java中的类被final关键字修饰后,该类将不可以被继承,也就是不能够派生子类:
final class Animal{ 方法体为空}
class Dog extends Animal{ 方法体为空 }
class Example06{
public static void main(String [] args){
Dog dog=new Dog();
}
}
以上代码,编译时报错,由此可见,被final关键字修饰的类为最终类,不能被其他类继承。
final关键字修饰方法
当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方法:
class Animal{
public final void shout(){}
}
class Dog extends Animal{
//重写父类的shout()方法
public void shout(){}
}
class Demo{
public static void main(String [] args){
Dog dog=new Dog();
}
}
编译时报错,当父类的方法不希望被子类重写时,就可以使用final关键字修饰该
final关键字修饰变量
Java中被final修饰的变量为常量,它只能被赋值一次,也就是说final修饰的变量一旦赋值,就不能被改变,如果再次对该变量进行赋值,则程序会在编译时报错:
final int num=0;
num=1; //报错
final关键字修饰成员变量是,虚拟机不会对其进行初始化,因此使用final修饰成员变量时,需要在定义变量的同时赋予一个初始值。
final String name; //报错