<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讀書筆記《Thinking in Java》-第一章-07/10/14

    Posted on 2007-10-15 16:22 Raylong 閱讀(1054) 評論(6)  編輯  收藏 所屬分類: 讀書筆記
    讀書筆記《Thinking in Java》-第一章-07/10/14

    16、對于非面向對象的編程,它產生的函數調用會引起“前期綁定”。編譯器產生對一個具體函數名字的調用,而連接器將這個調用解析到將要被執行的代碼的絕對地址。相反地,在面向對象編程中采用了“后期綁定”,當對象發送消息時,被調用的代碼直到運行時才能被確定。為了執行后期綁定,Java采用一段特殊的代碼來替代絕對地址調用。這段代碼使用在對象中存儲的信息來計算方法體的地址。
    (多態,或者說是向上轉型。他忽略了類型的具體細節,僅僅和基類交互。這很符合我們人類的思維習慣,比如你會開車,那么給你一輛奔馳你肯定能開,寶馬也可以。只需說我在開車,而不必說我在開奔馳開寶馬。當然你可以這么說,炫耀一下也不是錯^_^,Java允許你這么做。)

    17、(繼承就是對接口的復用,既然我們只想復用接口,那么干脆就創建接口,用接口去操作具體對象。接口優于抽象類。)

    18、Java對象是在堆中創建的,也就是動態的方式。這種動態的方式犧牲了效率,但是帶來極大的靈活性,這種靈活性正是解決一般化編程問題的要點所在。Java的垃圾回收機制,可以自動發現不會再被使用的對象,并繼而銷毀它。這種方式減少了需要考慮的議題和必要編寫的代碼。更重要的是垃圾回收器提供了更高層次的保障,可以避免暗藏的內存泄漏問題。(這個問題使得許多的C++項目折戟沉沙)。

    19、容器是一種持有其他對象引用的新的對象類型,這些對象本身并不在容器中,僅僅是引用。容器有多種多樣的,因為需要是多種多樣的,所以根據需要在已知的容器中選用合適的容器類型就可以了。這些容器提供了相應的方法來處理其中引用的對象,如排序、查找、存入、取出等。
    迭代器是一種選取容器中的元素,并把它呈現給用戶的對象。迭代器提供了一種抽象,把容器的細節從訪問容器的代碼中分離出來。容器通過迭代器被簡單地抽象成為一個序列。就是說,你可以遍歷整個序列,而不用擔心底層結構。
    (這些容器就是很通用的數據結構和算法的有機集合。)

    20、對容器的選擇:不同的容器提供了不同的接口和外部行為;不同的接口對于某些操作具有不同的效率。如:ArrayList和LinkedList具有相同的接口和外部行為。而ArrayList隨機訪問元素的時間是固定的開銷,LinkedList則是需要在列表中移動的,代價比較高昂,不適合做大量的隨機訪問。基類List和迭代器所帶來的抽象,把容器之間進行轉換時對代碼產生的影響降低到最小限度。
    (所以,新建容器要這樣:List alist = new ArrayList();)

    21、Java的單根繼承結構好處很多,這里就不羅嗦了。

    22、除非確切地知道所要處理的對象的類型,否則向下轉型幾乎是不安全的。
    (向上轉型就是把馬當作動物處理,馬具有動物的所有特性,所以是絕對安全的。向下轉型就是把動物當作馬處理,馬吃草是毫無爭議的,但是動物吃草就不行了,因為獅子老虎會不高興的:“俺可不是吃素的!”,危險就在這里。)

    23、關于泛型:我看的是《Thinking in Java》第三版,使用的是j2se1.4,而此時j2se1.6都面世了。Java發展的非常迅速,早已經支持泛型了。此處的論述已經過時了,概不討論了……

    24、異常處理。Java的異常處理機制是非常優秀的,異常不能被忽略,所以他保證一定會在某處得到處理。
    (程序的健壯性是衡量程序質量的很重要的指標,不堪一擊的程序會出點錯誤就只能中止退出,可以回憶一下win98時代可怕的藍屏噩夢,看到藍屏是什么感覺呢?如果我很富有,一定會砸掉電腦,換上蘋果的。程序的健壯性如同人,要要經得起打擊,犯點錯誤是難免的,改正就是了,千萬不要自暴自棄,開除自己的地球球籍啊……)

    25、并發性。多線程最常見的就是用戶界面。通常線程是一種為單一處理器分配時間的手段。如果機器有多個處理器,那么程序不需要特殊調整也能執行得更快。Java的線程機制是內置的。

    Feedback

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-16 13:40 by 翔南
    恩 寫的挺好的!
    感覺自己的java基礎貌似不是很扎實..

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-16 14:46 by Raylong
    @翔南
    感謝回復,我也覺得在學過一段Java之后回過頭來發現很多細節都忘記了,會犯一些低級錯誤。所以就有了置頂的那篇Java語法總結。

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-16 22:18 by zhrb
    17、(繼承就是對接口的復用,既然我們只想復用接口,那么干脆就創建接口,用接口去操作具體對象。接口優于抽象類。)

    關于這個,我覺得繼承和接口是各有各的用途。并不存在接口就一定比抽象類好的這種說法吧。呵呵...

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-17 19:25 by Raylong
    @zhrb
    這個是在effective Java中的第16條建議,作者是Java類庫的作者之一,說話應該很有分量吧。但是我沒有足夠的實踐經驗,也體會不到接口的優越性。所以我也不是很理解的 呵呵

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-18 11:58 by zhrb
    看了一下java tutorial里面對接口的定義,底下附1:借口是抽取相互之間沒有關系的類的共同特征,而不用去關注類之間的關系。
    我覺得這個是借口和抽象類最關鍵的區別,接口是希望一組沒有層次關系的類之間可以擁有共同的行為,而抽象類作為父類的話,自然希望其子類在邏輯上和父類是有一定的關系的。比如說一個抽象類,鳥,可以飛。我們現在想設計一架飛機也可以飛,雖然我們可以讓飛機這個類繼承自鳥這個抽象類,但是這兩個完全是風馬牛不相及的東西,自然不應該有繼承關系了。但如果是接口設計的話,我們可以設計出一個flyable的接口,里面定義fly的方法,因為鳥和飛機都可以飛,所以我們可以讓鳥和飛機類去implement這個flyable的接口。
    java tutorial還有一個例子,比如說商店有若干種商品,各種商品之間一般不會有什么繼承關系,但是現在店主希望管理各種商品,所以店主希望所有的商品都實現一種可以稱為管理的接口,里面包含用于管理的一些方法和屬性,如價格、索引號這樣的屬性或者設置零售價格這樣的方法。這樣接口就巧妙的將各種不相關的類聯系起來了。所以接口給編程以極大的靈活性。
    Java中還有一些常用借口,比如說comparable接口,任何類只要實現了這個接口,都可以被compare。(好像是這樣,不確定,有錯請指出)
    不過附3,看不太懂,是什么意思。大家交流一下

    附:You use an interface to define a protocol of behavior that can be implemented by any class anywhere in the class hierarchy. Interfaces are useful for the following:

    1.Capturing similarities among unrelated classes without artificially forcing a class relationship
    2.Declaring methods that one or more classes are expected to implement
    3.Revealing an object's programming interface without revealing its class
    4.Modeling multiple inheritance, a feature of some object-oriented languages that allows a class to have more than one superclass
    @Raylong

    # re: 讀書筆記《Thinking in Java》-第一章-07/10/14  回復  更多評論   

    2007-10-26 11:00 by Matthew Chen
    你可以使用接口作為一種行為的協議,它可以實現自繼承層次中的任何類(也就是它可以是任何派系)。
    1.在沒有關聯的類之間保留相似性而不依賴類的(繼承)關系。
    2.聲明多個類(它們多半是平行的,沒有繼承關系)中期望實現的方法。
    3.展現一個對象的編程接口而不是它的類。(面向接口編程,ruby中的duck type的思想解釋得很形象)
    3.建立多繼承模型,一種在一些oo語言中允許的一個類有多個父類的特性。
    主站蜘蛛池模板: 一级毛片全部免费播放| 亚洲av无码不卡| 亚洲欧美综合精品成人导航| 7x7x7x免费在线观看| 久久久久亚洲AV片无码下载蜜桃| 美女在线视频观看影院免费天天看| 中文字幕亚洲第一| 中国一级特黄的片子免费 | 亚洲欧美国产国产一区二区三区 | 三级片免费观看久久| 免费一看一级毛片| 亚洲午夜精品一区二区麻豆| 成人网站免费观看| 亚洲AV无码一区二区三区网址| 日韩免费福利视频| 日亚毛片免费乱码不卡一区| 国产亚洲A∨片在线观看| 久久青草精品38国产免费| 亚洲欧洲综合在线| 在线播放免费播放av片| 美女被免费网站视频在线| 中文字幕不卡亚洲| 8x成人永久免费视频| 亚洲人成电影网站色www| 亚洲国产精品一区二区九九| 国产在线观看免费视频软件| 久久精品a亚洲国产v高清不卡| 无码中文字幕av免费放| 免费精品久久久久久中文字幕 | 国产av无码专区亚洲av桃花庵| 91精品国产免费久久国语麻豆| 亚洲一卡一卡二新区无人区| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲国产精品碰碰| 国产免费拔擦拔擦8X高清在线人| 亚洲午夜在线播放| 亚洲区不卡顿区在线观看| 37pao成人国产永久免费视频| 亚洲成aⅴ人片久青草影院按摩| 亚洲国产日韩在线视频| 最新免费jlzzjlzz在线播放|