首页 > 技术文章 > final关键字的用法

zfyang2429 2019-01-22 17:28 原文

final关键字的作用

1.被final修饰的类不能被继承

报错信息:cannot inherit from final 'com.dajia.test.Animal'

2.被final修饰的方法不能被重写

报错信息:'eat()' cannot override 'eat()' in 'com.dajia.test.Animal'; overridden method is final

3.被final修饰的变量不能被改变

变量的引用不能改变?变量引用所指向的内容不能改变?

举例:

 1 public class FinalTest {
 2     private String str;
 3 
 4     public FinalTest(String str){
 5         this.str = str;
 6     }
 7 
 8     public String getStr() {
 9         return str;
10     }
11 
12     public void setStr(String str) {
13         this.str = str;
14     }
15 }
16 
17 //测试
18 public class TestController {
19 
20     public static void main(String[] args) {
21         final FinalTest finalTest = new FinalTest("111");
22         finalTest.setStr("222");
23         System.out.println(finalTest.getStr());
24     }
25 
26 }

结果:

222

说明final修饰的变量所指向的内容可以被修改

 1 public class TestController {
 2 
 3     public static void main(String[] args) {
 4         final FinalTest finalTest = new FinalTest("111");
 5         /*finalTest.setStr("222");*/
 6         final FinalTest finalTest1 = new FinalTest("222");
 7         finalTest = finalTest1;  
 8         System.out.println(finalTest.getStr());
 9     }
10 
11 }

第六行编译报错:

报错信息:cannot assign a value to final variable 'finalTest'

结论:final修饰的变量的引用不能被改变,变量引用所指向的内容可以被改变。

 

推荐阅读