Java中是否可以繼承String類,爲什麼

不能被繼承,因爲String類有final修飾符,而final修飾的類是不能被繼承的。

Java對String類的定義:

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    // 省略... 
}

詳細解析:

1. 關於final修飾符

根據程序上下文環境,Java關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出於兩種理解而需要阻止改變:設計或效率。
  final類不能被繼承,沒有子類,final類中的方法默認是final的。
  final方法不能被子類的方法覆蓋,但可以被繼承。
  final成員變量表示常量,只能被賦值一次,賦值後值不再改變。
  final不能用於修飾構造方法。
  注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認是final類型的。

如果一個類不允許其子類覆蓋某個方法,則可以把這個方法聲明爲final方法。
  使用final方法的原因有二:
  第一、把方法鎖定,防止任何繼承類修改它的意義和實現。
  第二、高效。編譯器在遇到調用final方法時候會轉入內嵌機制,大大提高執行效率。(這點有待商榷,《Java編程思想》中對於這點存疑)

final和static的區別:

很多時候會容易把static和final關鍵字混淆,static作用於成員變量用來表示只保存一份副本,而final的作用是用來保證變量不可變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章