final关键字可以用来修饰类,变量和方法,它具有以下特征
- final修饰的类不能被继承
- final修饰的方法不能被子类重写
- final修饰的变量(成员变量和局部变量)是常量,只能赋值一次
final关键字修饰类
Java中的类被final关键字修饰类后,该类将不可以被继承,也就是不能够派生子类。如下例:
final class Animal{
}
class Dog extends Animal{
}
public class text4 {
public static void main(String[] args) {
Dog dog = new Dog();
}
}
final关键字修饰方法
当一个类的方法被final修饰后,这个类的方法就不能被重写。如下例:
class Animal{
public final void shot() {
}
}
class Dog extends Animal{
public void shot() {
}
}
public class text4 {
public static void main(String[] args) {
Dog dog = new Dog();
}
}
final关键字修饰变量
Java中被final修饰的变量常量,它只能被赋值一次,该变量一旦被final修饰它的值就不能被改变。
修饰成员变量
public class text8 {
public static void main(String []args) {
final int num = 2;
num = 4;
}
}
当他修饰成员变量
class Student{
final String name;
public void printName() {
System.out.println("我是一个名叫+name+的学生");
}
}
public class text5 {
public static void main(String[] args) {
Student s = new Student();
s.printName();
}
}
程序运行name没有被赋值,Java虚拟机会把name初始化 但是name被final修饰无法被初始化
这样改:
class Student{
final String name = "小明 ";
public void printName() {
System.out.println("我是一个名叫"+name+"的学生");
}
}
public class text5 {
public static void main(String[] args) {
Student s = new Student();
s.printName();
}
}