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

首頁 > 學院 > 開發設計 > 正文

Java中final的使用

2019-11-15 01:01:30
字體:
來源:轉載
供稿:網友
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修飾符可以修飾靜態變量、成員變量和局部變量,分別表示靜態常量、實例常量和局部常量。
1 public class Demo{2   public static final int MAX_VALUE = 23;    //靜態常量3   public static final int MIN_VALUE = 10;    //靜態常量4   private final Date birthday = new Date();  //成員常量5 }

靜態常量一般以大寫字母命名,單詞之間以“_”符號分開。

  • final修飾的成員變量必須初始化。
 1 public class FinalTest { 2     final int a = 1;    //成員常量 默認初始化 3     static final int b = 2;    //靜態常量 默認初始化 4     final int c;    //成員常量 5     static final int d;    //靜態常量 6      7     public FinalTest(){ 8         c = 3;    //成員常量 未默認初始化,可在構造函數中初始化 9     }10     11     static {12         d = 4;    //靜態常量 未默認初始化,可在靜態代碼塊中初始化13     }14 }
  • final 變量只能賦一次值,如果將引用類型的變量用 final 修飾,該變量只能始終引用一個對象,但可以改變對象的內容。
 1 public class FinalTest { 2     String str = ""; 3     public void print(){ 4         System.out.println(str); 5     }     6     public static void main(String[] args){ 7         final FinalTest finalTest = new FinalTest(); 8         finalTest.str = "xixihaha"; 9         finalTest.print();10     }11 }

總結:

實際程序中,通過 final 修飾符來定義常量,目的為:

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

參考:《Java面向對象編程》


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 东阳市| 鄂托克旗| 遂宁市| 浮梁县| 宁波市| 东宁县| 家居| 福建省| 色达县| 延川县| 安岳县| 宣汉县| 昌宁县| 莒南县| 丰县| 通道| 湘阴县| 依兰县| 济源市| 葫芦岛市| 哈尔滨市| 阜康市| 大连市| 荔浦县| 吴桥县| 辉县市| 娄底市| 江永县| 常德市| 克东县| 海盐县| 精河县| 临清市| 桓台县| 犍为县| 墨脱县| 卢氏县| 屯昌县| 工布江达县| 闽清县|