Java中String為什么是final


final概念:


  如果一個類被聲明為final,意味着它不能再派生出新的子類,不能作為父親被繼承。因此,一個類不能既被聲明為abstract,又被聲明為final。

  將變量或方法聲明為final,可以保證它們在使用中不被改變。其初始化可以在兩個地方:

    一是其定義處,也就是說,在final變量定義時直接給其賦值

    二是在構造函數中。

  這兩個地方只能選其一,要么在定義時給值,要么在構造函數中給值,不能同時既在定義時給了值,又在構造函數中給另外的值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重寫。

  final變量,代表該變量為常量並且必須要賦值

static final int i = 123;

static final int i;
static {
  i = 123;
}

 

String為什么是final類呢?


  經過上面的敘述,可以說:

    主要是為了“效率” 和 “安全性” 的緣故。若 String允許被繼承, 由於它的高度被使用率, 可能會降低程序的性能,所以String被定義成final。

  Java並不是操作系統本地語言,換句話說Java必須借助操作系統本身的力量才能做事,JDK中提供的好多核心類比如String,這類的類的內部好多方法的實現都不是Java編程語言本身編寫的,好多方法都是調用的操作系統本地的API,這就是著名的“本地方法調用”,也只有這樣才能做事,這種類是非常底層的,和操作系統交流頻繁的,那么如果這種類可以被繼承的話,如果我們再把它的方法重寫了,往操作系統內部寫入一段具有惡意攻擊性質的代碼什么的,這不就成了核心病毒了么? 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM