国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Java中final的用法

2019-11-26 15:01:56
字體:
來源:轉載
供稿:網友

概念

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 修飾符來定義常量,目的為:

  • 提高程序的安全性。
  • 提高代碼可維護性。
  • 提供代碼可讀性。

 以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合川市| 饶平县| 芦山县| 大关县| 新宁县| 汾阳市| 苍梧县| 泰和县| 集安市| 诸暨市| 儋州市| 阿图什市| 许昌县| 麦盖提县| 外汇| 九龙城区| 罗城| 万山特区| 玉门市| 大竹县| 开鲁县| 万山特区| 纳雍县| 福清市| 新平| 乐安县| 永川市| 堆龙德庆县| 汾阳市| 保山市| 耒阳市| 孟连| 古浪县| 宁波市| 宜黄县| 东乡| 葫芦岛市| 八宿县| 东城区| 海安县| 徐州市|