程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳解Java中final的用法

詳解Java中final的用法

編輯:關於JAVA

詳解Java中final的用法。本站提示廣大學習愛好者:(詳解Java中final的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Java中final的用法正文


概念

final 具有“弗成轉變的”的寄義,可以潤飾 非籠統類、非籠統成員辦法和變量。

  • 用 final 潤飾的類不克不及被繼續,沒有子類。
  • 用 final 潤飾的辦法不克不及被子類的辦法籠罩(重寫)。
  • 用 final 潤飾的變量表現常量,只能被賦一次值(聲明變量的時刻)。

注:

final 不克不及用來潤飾結構辦法,由於“辦法籠罩”這一概念僅實用於類的成員辦法,而不實用於類的結構辦法,父類的結構辦法和子類的結構辦法之間不存在籠罩的關系,是以用final潤飾結構辦法沒有任何意義。

父類頂用 private 潤飾的辦法不克不及被子類的辦法所籠罩,是以可以懂得為 private 類型的辦法默許是 final 類型的。

final 類

把類界說為 final,使這個類不克不及被繼續。詳細應用場景以下:

  • 不是專門為繼續而設計的類,類自己的辦法之間有龐雜的挪用關系。假如隨便創立這些類的子類,子類有能夠會毛病的修正了父類的完成細節。
  • 處於平安的緣由,類的完成細節不許可在被擴大。
  • 在創立對象模子時,確信這個類不會再被擴大。

例如:JDK中的java.lang.String 類被界說為 final 類型。

public final class String{...}

final 辦法

在某些情形下,出於平安緣由,父類不許可子類籠罩某個辦法,此時可以把這個辦法聲明為 final 類型。

例如:JDK中的java.lang.Object 類中,getClass()辦法為 final 類型,而 equals() 辦法不為 final 類型。

一切 Object 的子類都可以籠罩 equals() 辦法,但不克不及籠罩 getClass() 辦法。

final 變量

用 final 潤飾的變量表現取值不會轉變的常量。

例如:JDK中 java.lang.Integer 類中界說了兩個常量。

public static final int   MIN_VALUE = 0x80000000;

public static final int   MAX_VALUE = 0x7fffffff;

final 變量具有以下特點:

  • final潤飾符可以潤飾靜態變量、成員變量和部分變量,分離表現靜態常量、實例常量和部分常量。
 public class Demo{
  public static final int MAX_VALUE = 23;  //靜態常量
  public static final int MIN_VALUE = 10;  //靜態常量
  private final Date birthday = new Date(); //成員常量
 }

靜態常量普通以年夜寫字母定名,單詞之間以“_”符號離開。

  • final潤飾的成員變量必需初始化。
 public class FinalTest {
   final int a = 1;  //成員常量 默許初始化
   static final int b = 2;  //靜態常量 默許初始化
   final int c;  //成員常量
   static final int d;  //靜態常量
   
   public FinalTest(){
     c = 3;  //成員常量 未默許初始化,可在結構函數中初始化
   }
   
   static {
     d = 4;  //靜態常量 未默許初始化,可在靜態代碼塊中初始化
   }
 }

final 變量只能賦一次值,假如將援用類型的變量用 final 潤飾,該變量只能一直援用一個對象,但可以轉變對象的內容。

 public class FinalTest {
   String str = "";
   public void print(){
     System.out.println(str);
   }  
   public static void main(String[] args){
     final FinalTest finalTest = new FinalTest();
     finalTest.str = "xixihaha";
     finalTest.print();
   }
 }

總結:

現實法式中,經由過程 final 潤飾符來界說常量,目標為:

  • 進步法式的平安性。
  • 進步代碼可保護性。
  • 供給代碼可讀性。

 以上就是本文的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved