最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中final的用法

 更新時(shí)間:2015年08月03日 08:58:07   作者:JiJie.LianG  
本文主要介紹了Java中final的使用方法,final是java的關(guān)鍵字,本文就詳細(xì)說(shuō)明一下它的使用方法,需要的朋友可以參考下

概念

final 具有“不可改變的”的含義,可以修飾 非抽象類、非抽象成員方法和變量。

  • 用 final 修飾的類不能被繼承,沒(méi)有子類。
  • 用 final 修飾的方法不能被子類的方法覆蓋(重寫)。
  • 用 final 修飾的變量表示常量,只能被賦一次值(聲明變量的時(shí)候)。

注:

final 不能用來(lái)修飾構(gòu)造方法,因?yàn)椤胺椒ǜ采w”這一概念僅適用于類的成員方法,而不適用于類的構(gòu)造方法,父類的構(gòu)造方法和子類的構(gòu)造方法之間不存在覆蓋的關(guān)系,因此用final修飾構(gòu)造方法沒(méi)有任何意義。

父類中用 private 修飾的方法不能被子類的方法所覆蓋,因此可以理解為 private 類型的方法默認(rèn)是 final 類型的。

final 類

把類定義為 final,使這個(gè)類不能被繼承。具體使用場(chǎng)景如下:

  • 不是專門為繼承而設(shè)計(jì)的類,類本身的方法之間有復(fù)雜的調(diào)用關(guān)系。如果隨意創(chuàng)建這些類的子類,子類有可能會(huì)錯(cuò)誤的修改了父類的實(shí)現(xiàn)細(xì)節(jié)。
  • 處于安全的原因,類的實(shí)現(xiàn)細(xì)節(jié)不允許在被擴(kuò)展。
  • 在創(chuàng)建對(duì)象模型時(shí),確信這個(gè)類不會(huì)再被擴(kuò)展。

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

public final class String{...}

final 方法

在某些情況下,出于安全原因,父類不允許子類覆蓋某個(gè)方法,此時(shí)可以把這個(gè)方法聲明為 final 類型。

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

所有 Object 的子類都可以覆蓋 equals() 方法,但不能覆蓋 getClass() 方法。

final 變量

用 final 修飾的變量表示取值不會(huì)改變的常量。

例如:JDK中 java.lang.Integer 類中定義了兩個(gè)常量。

public static final int   MIN_VALUE = 0x80000000;

public static final int   MAX_VALUE = 0x7fffffff;

final 變量具有以下特征:

  • final修飾符可以修飾靜態(tài)變量、成員變量和局部變量,分別表示靜態(tài)常量、實(shí)例常量和局部常量。
 public class Demo{
  public static final int MAX_VALUE = 23;  //靜態(tài)常量
  public static final int MIN_VALUE = 10;  //靜態(tài)常量
  private final Date birthday = new Date(); //成員常量
 }

靜態(tài)常量一般以大寫字母命名,單詞之間以“_”符號(hào)分開(kāi)。

  • final修飾的成員變量必須初始化。
 public class FinalTest {
   final int a = 1;  //成員常量 默認(rèn)初始化
   static final int b = 2;  //靜態(tài)常量 默認(rèn)初始化
   final int c;  //成員常量
   static final int d;  //靜態(tài)常量
   
   public FinalTest(){
     c = 3;  //成員常量 未默認(rèn)初始化,可在構(gòu)造函數(shù)中初始化
   }
   
   static {
     d = 4;  //靜態(tài)常量 未默認(rèn)初始化,可在靜態(tài)代碼塊中初始化
   }
 }

final 變量只能賦一次值,如果將引用類型的變量用 final 修飾,該變量只能始終引用一個(gè)對(duì)象,但可以改變對(duì)象的內(nèi)容。

 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();
   }
 }

總結(jié):

實(shí)際程序中,通過(guò) final 修飾符來(lái)定義常量,目的為:

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

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Mybatis之typeAlias配置的3種方式小結(jié)

    Mybatis之typeAlias配置的3種方式小結(jié)

    這篇文章主要介紹了Mybatis之typeAlias配置的3種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • RocketMQ源碼本地搭建調(diào)試方法

    RocketMQ源碼本地搭建調(diào)試方法

    這篇文章主要介紹了RocketMQ源碼本地搭建調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析

    Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之單例設(shè)計(jì)模式解析,設(shè)計(jì)模式是在大量的實(shí)踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式,設(shè)計(jì)模式免去我們自己再思考和摸索,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于Java中代碼塊的執(zhí)行順序

    關(guān)于Java中代碼塊的執(zhí)行順序

    這篇文章主要介紹了關(guān)于Java中代碼塊的執(zhí)行順序,構(gòu)造代碼塊是給所有對(duì)象進(jìn)行統(tǒng)一初始化,而構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象初始化,因?yàn)闃?gòu)造函數(shù)是可以多個(gè)的,運(yùn)行哪個(gè)構(gòu)造函數(shù)就會(huì)建立什么樣的對(duì)象,但無(wú)論建立哪個(gè)對(duì)象,都會(huì)先執(zhí)行相同的構(gòu)造代碼塊,需要的朋友可以參考下
    2023-08-08
  • springboot整合mybatis分頁(yè)攔截器的問(wèn)題小結(jié)

    springboot整合mybatis分頁(yè)攔截器的問(wèn)題小結(jié)

    springboot整合mybatis分頁(yè)攔截器,分頁(yè)攔截實(shí)際上就是獲取sql后將sql拼接limit,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • Java中ConcurrentHashMap是如何實(shí)現(xiàn)線程安全

    Java中ConcurrentHashMap是如何實(shí)現(xiàn)線程安全

    ConcurrentHashMap是一個(gè)哈希表,支持檢索的全并發(fā)和更新的高預(yù)期并發(fā)。本文主要介紹了Java中ConcurrentHashMap是如何實(shí)現(xiàn)線程安全,感興趣的可以了解一下
    2021-11-11
  • Java8?函數(shù)式編程stream流使用詳解

    Java8?函數(shù)式編程stream流使用詳解

    這篇文章主要介紹了Java8?函數(shù)式編程stream流使用詳解的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • java 方法與數(shù)組基礎(chǔ)使用詳解

    java 方法與數(shù)組基礎(chǔ)使用詳解

    Java語(yǔ)言中的“方法”(Method)在其他語(yǔ)言當(dāng)中也可能被稱為“函數(shù)”(Function),數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java 語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-04-04
  • Java8并行流中自定義線程池操作示例

    Java8并行流中自定義線程池操作示例

    這篇文章主要介紹了Java8并行流中自定義線程池操作,結(jié)合實(shí)例形式分析了并行流的相關(guān)概念、定義及自定義線程池的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • springboot?整合表達(dá)式計(jì)算引擎?Aviator?使用示例詳解

    springboot?整合表達(dá)式計(jì)算引擎?Aviator?使用示例詳解

    本文詳細(xì)介紹了Google?Aviator?這款高性能、輕量級(jí)的?Java?表達(dá)式求值引擎,并通過(guò)詳細(xì)的代碼操作演示了相關(guān)API的使用以及如何在springboot項(xiàng)目中進(jìn)行集成,感興趣的朋友一起看看吧
    2024-08-08

最新評(píng)論

河西区| 永泰县| 克拉玛依市| 沿河| 昆山市| 博兴县| 遵化市| 合阳县| 贵溪市| 宣城市| 扎赉特旗| 云南省| 若羌县| 资兴市| 福海县| 湘潭县| 甘泉县| 龙井市| 叶城县| 德令哈市| 江源县| 临江市| 怀远县| 朝阳县| 阿克苏市| 旅游| 衡南县| 大理市| 昆明市| 高淳县| 泸溪县| 贡觉县| 拜泉县| 斗六市| 台安县| 新乐市| 军事| 正镶白旗| 临海市| 富川| 榆社县|