Java中的String類能否被繼承?為什么?

作者:nnngu
GitHub:https://github.com/nnngu
博客園:http://www.cnblogs.com/nnngu
簡書:http://www.itdecent.cn/users/1df20d76ea5c
知乎:https://www.zhihu.com/people/nnngu/posts


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

Java對String類的定義:

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

final修飾符的用法:

1.修飾類

當用final修飾一個類時,表明這個類不能被繼承。final類中的成員變量可以根據需要設為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。

2.修飾方法

使用final修飾方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現版本中,會將final方法轉為內嵌調用。但是如果方法過于龐大,可能看不到內嵌調用帶來的任何性能提升。在最近的Java版本中,不需要使用final方法進行這些優(yōu)化了。

因此,只有在想明確禁止該方法在子類中被覆蓋的情況下才將方法設置為final。

注:一個類中的private方法會隱式地被指定為final方法。

3.修飾變量

對于被final修飾的變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。雖然不能再指向其他對象,但是它指向的對象的內容是可變的。

final和static的區(qū)別:

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

 1 public class Demo1 {
 2     public static void main(String[] args)  {
 3         MyClass myClass1 = new MyClass();
 4         MyClass myClass2 = new MyClass();
 5         System.out.println(myClass1.i);
 6         System.out.println(myClass2.i);
 7         System.out.println(myClass1.j);
 8         System.out.println(myClass2.j);
 9 
10     }
11 }
12 
13 class MyClass {
14     public final double i = Math.random();
15     public static double j = Math.random();
16 }

運行結果:

0.3222977275463088
0.2565532218939688
0.36856868882926397
0.36856868882926397

每次打印的兩個j值都是一樣的,而i的值卻是不同的。從這里就可以知道final和static變量的區(qū)別了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,692評論 18 399
  • 談到final關鍵字,想必很多人都不陌生,在使用匿名內部類的時候可能會經常用到final關鍵字。另外,Java中的...
    WilsonMing閱讀 683評論 0 5
  • Java經典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 2,075評論 0 2
  • 今天,我當著大家的面許了4個愿。這四個愿望也恰恰是2016年的終極目標,2016年到底該干什么,我已經想好了,雖然...
    死耗子文閱讀 330評論 0 0
  • 一天聽著行李箱的咕嚕咕嚕就過去了。夏天的便利有二,白日夢更好做,曬衣服更好干。四樓的寢室黑了大半,我的床頭仍亮...
    層樓r閱讀 217評論 0 0

友情鏈接更多精彩內容