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修饰的变量的引用不能被改变,变量引用所指向的内容可以被改变。