欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java中final的用法

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

概念

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

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

注:

final 不能用來修飾構造方法,因為“方法覆蓋”這一概念僅適用于類的成員方法,而不適用于類的構造方法,父類的構造方法和子類的構造方法之間不存在覆蓋的關系,因此用final修飾構造方法沒有任何意義。

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

final 類

把類定義為 final,使這個類不能被繼承。具體使用場景如下:

  • 不是專門為繼承而設計的類,類本身的方法之間有復雜的調用關系。如果隨意創(chuàng)建這些類的子類,子類有可能會錯誤的修改了父類的實現細節(jié)。
  • 處于安全的原因,類的實現細節(jié)不允許在被擴展。
  • 在創(chuàng)建對象模型時,確信這個類不會再被擴展。

例如: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修飾符可以修飾靜態(tài)變量、成員變量和局部變量,分別表示靜態(tài)常量、實例常量和局部常量。
 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)常量一般以大寫字母命名,單詞之間以“_”符號分開。

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

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

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

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

相關文章

  • Java經典快排思想以及快排的改進講解

    Java經典快排思想以及快排的改進講解

    今天小編就為大家分享一篇關于Java經典快排思想以及快排的改進講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解決springSecurity 使用默認登陸界面登錄后無法跳轉問題

    解決springSecurity 使用默認登陸界面登錄后無法跳轉問題

    這篇文章主要介紹了解決springSecurity 使用默認登陸界面登錄后無法跳轉問題,項目環(huán)境springboot下使用springSecurity 版本2.7.8,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-12-12
  • Spring?Data?Redis切換底層Jedis和Lettuce實現源碼解析

    Spring?Data?Redis切換底層Jedis和Lettuce實現源碼解析

    這篇文章主要為大家介紹了Spring?Data?Redis切換底層Jedis和Lettuce實現方法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • IntelliJ IDEA中ajax開發(fā)實現分頁查詢示例

    IntelliJ IDEA中ajax開發(fā)實現分頁查詢示例

    這篇文章主要介紹了IntelliJ IDEA中ajax開發(fā)實現分頁查詢,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 使用自定義注解實現加解密及脫敏方式

    使用自定義注解實現加解密及脫敏方式

    這篇文章主要介紹了使用自定義注解實現加解密及脫敏方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 深入理解Maven的坐標與依賴

    深入理解Maven的坐標與依賴

    這篇文章主要介紹了深入理解Maven的坐標與依賴,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 詳解Spring?中?Bean?對象的存儲和取出

    詳解Spring?中?Bean?對象的存儲和取出

    由于?Spring?擁有對象的管理權,所以我們也需要擁有較為高效的對象存儲和取出的手段,下面我們來分別總結一下,對Spring?中?Bean?對象的存儲和取出知識感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • java字符串數組進行大小排序的簡單實現

    java字符串數組進行大小排序的簡單實現

    下面小編就為大家?guī)硪黄猨ava字符串數組進行大小排序的簡單實現。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 通過工廠模式返回Spring Bean方法解析

    通過工廠模式返回Spring Bean方法解析

    這篇文章主要介紹了通過工廠模式返回Spring Bean方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 詳解java整合solr5.0之solrj的使用

    詳解java整合solr5.0之solrj的使用

    本篇文章主要介紹了詳解java整合solr5.0之solrj的使用 ,具有一定的參考價值,有興趣的可以了解下
    2017-06-06

最新評論