Java之final关键字

Posted zengblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之final关键字相关的知识,希望对你有一定的参考价值。

final关键字概述:

在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。

final是最终的意思,可以修饰类、变量、成员方法。

1.修饰类: 禁止被继承。

2.修饰变量: 变量被final修饰,该变量的值在被首次赋值之后,就不能在被重复赋值。

3.final修饰成员方法: 一旦父类中的方法被final修饰,不能被子类所覆盖 。

final修饰变量:

1.修饰成员变量:必须在定义时初始化, 不包快虚拟机默认。

2.修饰局部变量:可以在定义时初始化。

注意事项:

1.final标记的类不能被继承。目的是提高安全性,提高程序的可读性。

比如String类、System类、StringBuffer类。

2.final标记的方法不能被子类重写,比如Object类中的getClass()。

3.final标记的变量(成员变量或局部变量)即称为常量。

名称大写,且只能被赋值一次。

4.final标记的成员变量必须在声明时或在每个构造器中

或代码块中显式赋值,然后才能使用。

5.static final为全局常量。

 1 /*
 2 final修饰变量时分为2种情况:(初始化时机)
 3     1.修饰成员变量:必须在定义时初始化, 不包快虚拟机默认
 4     2. 修饰局部变量:可以在定义时初始化
 5 
 6 */
 7 public class finalDemo {
 8 }
 9 
10 class A{
11     final int a1;
12     //构造函数赋初值
13     public A(int num) {
14         a1 = num;
15     }
16     final int a2 = 99;
17     final int a3;
18 
19     //构造代码块
20     {
21         a3 = 10;
22     }
23 }
 1 public class KeyOfFinal {
 2   public static void main(String[] args) {
 3     //final修饰变量
 4     final int i = 0;
 5     System.out.println(i);
 6     //i = 1;
 7 
 8     //研究被final修饰的变量,初始化时机
 9     final int ii;
10     ii = 10;
11     System.out.println(i);
12   }
13 }
14 
15 // 被final修饰的类不能被其他类继承
16 class FinalFather{
17   //被final修饰的父类方法不能被子类覆盖
18   final int i;
19   public FinalFather() {
20     i = 10;
21   }
22   public FinalFather(int j) {
23     i = 1000;
24   }
25 }
26 class FinalSon extends FinalFather{
27 }
 1 public final class Test {
 2     public static int totalNumber = 5;
 3     public final int ID;
 4 
 5     public Test() {
 6         //可在构造器中给final修饰的“变量”赋值
 7         ID = ++totalNumber;
 8     }
 9 
10     public static void main(String[] args) {
11         Test t = new Test();
12         System.out.println(t.ID);
13         final int I = 10;
14         final int J;
15         J = 20;
16         J = 30;//非法
17     }
18 }        

以上是关于Java之final关键字的主要内容,如果未能解决你的问题,请参考以下文章

一脚踩进java之基础篇19——面向对象 (final,static关键字)

Java之final关键字解析

Java入门系列之final

Java之final关键字

Java之final关键字

Java基础之final关键字