<<Thinking in Java>> 中一些有爭議的地方

<<Thinking in Java>>從是一本好書, 總的來說這本書講的非常雜, 方方面面都有講到, 各個知識點延伸的也不錯. 但是一本容量如此之大的書挑不出一點瑕疵是不可能的, 并且作者本人的個人風格在本書中體現的比較重, 導致它在部分細節(jié)出現了一些問題, 如果鉆研的不是太深入的話其實大多無傷大雅, 因為閱讀本書最重要的是領會作者所想表達的編程思想. 但是研究完了JVM之后再來讀本書就會發(fā)現里面小毛小病有點多, 目前只找到這么多, 之后會再補充:

1. P96 構造器是靜態(tài)方法

? 原文是"即使沒有顯示地使用static關鍵詞, 構造器實際上也是靜態(tài)方法".

? 這個問題我在另一篇博文講到過, 構造器怎么想都不是靜態(tài)方法, 它是一種只在new或者反射時new instance中調用的特殊方法. 證明就是JVM會給構造器傳入一個this指針, 說明構造器是屬于該類的一個方法.

? 這里我想談談什么是靜態(tài)方法, 靜態(tài)方法雖然是在放在某一個類里面的(Java里面所有東西都在class里面), 但它和所屬類的關系僅僅是在加載時體現的, 換句話說, 拋開加載的時機不談, 靜態(tài)方法和靜態(tài)字段其實和這類沒半毛錢關系(好吧, 真要說關系的話還是有一點的, 如果是private的話只能本類的"東西"來調用, 這個"東西"可以是對象也可以是靜態(tài)的東西), 靜態(tài)方法應該有以下特點(純本人想法, 僅供參考):

  1. 靜態(tài)方法不屬于任何一個對象, 它是全局的, 在我眼中它更像是由JVM持有的方法(其實我也是在學JS的過程領悟到的, JS的全局是window, 那么Java的全局就是JVM啰).

  2. 因為不會像普通方法那樣隱性的傳入this指針, 所以靜態(tài)方法里面不能調用屬于該類的fields或方法.

    結論: TIJ在胡說八道 = =

2. P143 private和final

? 原文: "類中所有的private方法都隱式的指定為是final的".

? 實際上這兩個關鍵字完全沒有關系, private指的是只有本類才能調用, final則是不可變(immutable), 反例也非常好找, 在子類中繼承final會報錯, 但是繼承private卻不會報錯(其實不是繼承, 子類和父類是兩個方法). 如果private是final的, 那么它也應該會報錯才對.

? final是不能被重寫, 可以被繼承的, private也是不能被重寫, 可以繼承, 但是繼承的方法子類訪問不到. 只有通過父類public的方法才能訪問到, 舉個例子:

public class Father {

    private int a = 1;

    public int getA(){
        return A();
    }
}

public class Son extends Father{

    public static void main(String[] args) {
        Father father = new Son();
        System.out.println(father.getA());
    }
}
可以看出, Son要想訪問Father類的私有字段, 需要通過公開方法去訪問, 也就是說子類對象是繼承了父類的私有字段和方法的.

? 題外話: 關于final有個非常實用的小技巧, 我是從<<重構>>中學到的, <<重構>>中談到一個引用最好職責單一, 不要重復賦值, 要是有一個引用前后干了不同的事情那么最好把它們拆開來, 不用前一個引用而是再寫個新引用. 那么要怎么判斷一個引用有沒有重復賦值呢? 非常簡單啦, 就是加個final關鍵詞, 如果改過了這個引用編譯器就會報錯.

3. 第14章 關于RTTI和反射

? 原文認為RTTI是一種運行時類型識別, Java的多態(tài)用的就是RTTI實現的, 而反射則是能在運行期獲得.class的類型信息. 這里道理說的都很對, 只是Sun從來沒有認為Java有RTTI這個說法. 具體多態(tài)是怎么實現的可以看我的這篇文章..

最后是一點點自己的感想, 對于本書的作者, 我是抱著敬仰之心的. 能把這么多內容組織好本身就證明了作者的功力(聽說Bruce Eckel的新書On Java8足足寫了1300多頁...). 寫文章本身就是一種設計的過程, 寫程序需要設計, 寫文章也需要設計. 寫多了博客才會發(fā)現自己的表達能力十分欠缺, 其實真正缺乏的正是怎么把內容組織好的能力, 所以說需要學習的東西還很多, 不僅僅是技術方面, 還有方方面面 = =.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末怕膛,一起剝皮案震驚了整個濱河市缀拭,隨后出現的幾起案子轴或,更是在濱河造成了極大的恐慌,老刑警劉巖库继,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡辫呻,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門琼锋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來放闺,“玉大人,你說我怎么就攤上這事缕坎〔勒欤” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵谜叹,是天一觀的道長匾寝。 經常有香客問我,道長荷腊,這世上最難降的妖魔是什么旗吁? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮停局,結果婚禮上很钓,老公的妹妹穿的比我還像新娘香府。我一直安慰自己,他們只是感情好码倦,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布企孩。 她就那樣靜靜地躺著,像睡著了一般袁稽。 火紅的嫁衣襯著肌膚如雪勿璃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天推汽,我揣著相機與錄音补疑,去河邊找鬼。 笑死歹撒,一個胖子當著我的面吹牛莲组,可吹牛的內容都是我干的。 我是一名探鬼主播暖夭,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼锹杈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迈着?” 一聲冷哼從身側響起竭望,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裕菠,沒想到半個月后咬清,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡奴潘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年枫振,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萤彩。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡粪滤,死狀恐怖,靈堂內的尸體忽然破棺而出雀扶,到底是詐尸還是另有隱情杖小,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響过咬,放射性物質發(fā)生泄漏迹卢。R本人自食惡果不足惜镇草,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦笆环、人聲如沸攒至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迫吐。三九已至,卻和暖如春账忘,著一層夾襖步出監(jiān)牢的瞬間志膀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工鳖擒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溉浙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓蒋荚,卻偏偏與公主長得像戳稽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圆裕,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359