<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 中的`final`關鍵字 - `final`變量,方法和類 > 原文: [https://beginnersbook.com/2014/07/final-keyword-java-final-variable-method-class/](https://beginnersbook.com/2014/07/final-keyword-java-final-variable-method-class/) 在本教程中,我們將學習`final`關鍵字的用法。`final`關鍵字可以與變量,方法和類一起使用。我們將詳細介紹以下主題。 1)`final`變量 2)`final`方法 3)`final`類 ## 1)`final`變量 `final`變量只不過是常數。初始化后,我們無法更改`final`變量的值。讓我們看看下面的代碼: ```java class Demo{ final int MAX_VALUE=99; void myMethod(){ MAX_VALUE=101; } public static void main(String args[]){ Demo obj=new Demo(); obj.myMethod(); } } ``` **輸出:** ```java Exception in thread "main" java.lang.Error: Unresolved compilation problem: The final field Demo.MAX_VALUE cannot be assigned at beginnersbook.com.Demo.myMethod(Details.java:6) at beginnersbook.com.Demo.main(Details.java:10) ``` 我們在上面的程序中遇到了編譯錯誤,因為我們試圖更改`final`變量`MAX_VALUE`的值。 注意:在大寫(CAPS)中使用常量名稱被認為是一種好習慣。 ### 空白的`final`變量 在聲明時未初始化的`final`變量稱為**空白`final`變量**。我們**必須在類的構造函數**中初始化空白的`final`變量,否則會拋出編譯錯誤(錯誤:變量`MAX_VALUE`可能尚未初始化)。 這是在類中使用空白`final`變量的方式: ```java class Demo{ //Blank final variable final int MAX_VALUE; Demo(){ //It must be initialized in constructor MAX_VALUE=100; } void myMethod(){ System.out.println(MAX_VALUE); } public static void main(String args[]){ Demo obj=new Demo(); obj.myMethod(); } } ``` **輸出:** ```java 100 ``` **什么是空白的`final`變量?** 假設我們有一個`Student`類,其中有一個名為`Roll No`的字段。由于`Roll No`不應該在學生注冊后更改,我們可以將其聲明為類中的`final`變量但我們無法提前為所有學生初始化`Roll No`(否則所有學生都會有相同的`Roll No`)。在這種情況下,我們可以聲明`Roll No`變量為空白的`final`,我們在對象創建期間初始化此值,如下所示: ```java class StudentData{ //Blank final variable final int ROLL_NO; StudentData(int rnum){ //It must be initialized in constructor ROLL_NO=rnum; } void myMethod(){ System.out.println("Roll no is:"+ROLL_NO); } public static void main(String args[]){ StudentData obj=new StudentData(1234); obj.myMethod(); } } ``` **輸出:** ```java Roll no is:1234 ``` 更多關于 [StackOverflow](https://stackoverflow.com/questions/11345061/why-must-a-final-variable-be-initialized-before-constructor-completes) 和 [Wiki](https://en.wikipedia.org/wiki/Final_%28Java%29#Blank_final) 的空白`final`變量。 ### 未初始化的靜態`final`變量 聲明期間未初始化的靜態`final`變量只能在[靜態塊](https://beginnersbook.com/2013/04/java-static-class-block-methods-variables/)中初始化。例: ```java class Example{ //static blank final variable static final int ROLL_NO; static{ ROLL_NO=1230; } public static void main(String args[]){ System.out.println(Example.ROLL_NO); } } ``` **輸出:** ```java 1230 ``` ## 2)`final`方法 `final`方法無法覆蓋。這意味著即使子類可以調用父類的`final`方法而沒有任何問題,但它不能覆蓋它。 例: ```java class XYZ{ final void demo(){ System.out.println("XYZ Class Method"); } } class ABC extends XYZ{ void demo(){ System.out.println("ABC Class Method"); } public static void main(String args[]){ ABC obj= new ABC(); obj.demo(); } } ``` 上面的程序會拋出一個編譯錯誤,但是我們可以在子類中使用父類`final`方法而不會出現任何問題。讓我們來看看這段代碼:這個程序運行正常,因為我們沒有[覆蓋](https://beginnersbook.com/2014/01/method-overriding-in-java-with-example/)`final`方法。這表明`final`方法可以[繼承](https://beginnersbook.com/2013/05/java-inheritance-types/),但它們不符合覆蓋的條件。 ```java class XYZ{ final void demo(){ System.out.println("XYZ Class Method"); } } class ABC extends XYZ{ public static void main(String args[]){ ABC obj= new ABC(); obj.demo(); } } ``` **輸出:** ```java XYZ Class Method ``` ## 3)`final`類 我們不能擴展`final`類。考慮以下示例: ```java final class XYZ{ } class ABC extends XYZ{ void demo(){ System.out.println("My Method"); } public static void main(String args[]){ ABC obj= new ABC(); obj.demo(); } } ``` **輸出:** ```java The type ABC cannot subclass the final class XYZ ``` **要記住的要點:** 1)[構造函數](https://beginnersbook.com/2013/03/constructors-in-java/)不能被聲明為 final。 2)本地`final`變量必須在聲明期間初始化。 3)[接口](https://beginnersbook.com/2013/05/java-interface/)中聲明的所有變量默認為 final。 4)我們無法改變`final`變量的值。 5)`final`方法不能被覆蓋。 6)`final`類不被繼承。 7)如果方法參數被聲明為`final`,則不能更改這些參數的值。 8)以所有大寫字母命名`final`變量是一個好習慣。 9)`final`,[`finally`](https://beginnersbook.com/2013/04/java-finally-block/ )和`finalize`確定了三個不同的術語。`finally`用于異常處理,`finalize`是在[垃圾收集](https://beginnersbook.com/2013/04/java-garbage-collection/)期間由 JVM 調用的方法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看