final关键字 Java

来源:互联网 发布:ubuntu ntp服务器设置 编辑:程序博客网 时间:2024/04/30 07:25

被final修饰的类,变量和方法具有以下特性:

1、final修饰的类不能被继承。

final class Animal {// 方法体为空}// Dog类继承Animal类class Dog extends Animal {}class Example06 {public static void main(String[] args) {Dog dog = new Dog(); // 创建Dog类的实例对象}}

结果:编译程序报错。


2、final修饰的方法不能被子类重写

class Animal {     // 使用final关键字修饰shout()方法public final void shout() {// 程序代码}}// 定义Dog类继承Animal类class Dog extends Animal {     // 重写Animal类的shout()方法public void shout() {// 程序代码}}class Example07 {public static void main(String[] args) {Dog dog=new Dog(); // 创建Dog类的实例对象}}
结果:编译程序报错。

3、final修饰的变量是常量,只能赋值一次。

public class Example08 {public static void main(String[] args) {final int num = 2; // 第一次可以赋值num = 4;             // 再次赋值会报错}}

结果:编译程序报错。

Java定义成员变量时会初始化为null,而final关键字修饰成员变量时,虚拟机不会对其进行初始化,所以final修饰成员变量时,需要在定义变量的同时赋予一个初始值,否则编译错误。如下面代码没有赋予初始值而报错。

class Student {final String name; // 使用final关键字修饰name属性     // 定义introduce()方法,打印学生信息public void introduce() {System.out.println("我是大燕,我叫" + name);}}public class Example09 {public static void main(String[] args) {Student stu = new Student();// 创建Student类的实例对象stu.introduce();  // 调用Student的introduce()方法}}
第2行代码改成下面将正确
final String name="小天";


原创粉丝点击