# 面向?qū)ο髮?dǎo)論 ?
01诫给、 人們所能夠解決的問題的復(fù)雜性直接取決于抽象的類型和質(zhì)量巷蚪。我們將問題空間中的元素及其在解空間中的表示稱為“對象”病毡。程序員可以通過添加新類型的對象使自身的對象適用于某個特定的問題。
02屁柏、 對象的五個基本特性:①.萬物皆為對象啦膜。②.程序是對象的合集,它們通過發(fā)送消息來告知彼此所要做的淌喻。③.每個對象都有自己的由其他對象所構(gòu)成的存儲僧家。④.每個對象都擁有其類型。⑤.某一特定類型的所有對象都可以接收同樣的消息裸删。
03八拱、 創(chuàng)建某一類型的變量(按照面向?qū)ο蟮恼f法,稱其為對象或者實例)涯塔,然后操作這些變量(稱其為發(fā)送消息或者請求肌稻;發(fā)送消息,對象就知道要做什么)匕荸。
04爹谭、 所有的實體就是對象,每一個對象都屬于定義了特性和行為的某個特定的類榛搔。
05诺凡、 因為類描述了具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象集合,所以一個類實際上就是一個數(shù)據(jù)類型践惑。
06腹泌、 接口確定了對某一特定對象所能實現(xiàn)的請求。但是在程序設(shè)計中必須有滿足這些請求的代碼尔觉。這些代碼與隱藏的數(shù)據(jù)一起構(gòu)成了實現(xiàn)凉袱。
07、 向某個對象“發(fā)送消息”(產(chǎn)生請求)穷娱,這個對象便知道此消息的目的绑蔫,然后執(zhí)行對應(yīng)的程序代碼运沦。
08泵额、 每個對象都提供服務(wù)。將對象看做是服務(wù)提供者有一個附帶的好處:它有助于提高對象的內(nèi)聚性携添。高內(nèi)聚是軟件設(shè)計的基本要求之一嫁盲,這意味著一個軟件構(gòu)件的各個方面“組合”得很好。
09、 Java用三個關(guān)鍵字在類的內(nèi)部設(shè)定邊界:public羞秤、private缸托、protected。這些訪問指定詞決定了緊跟其后被定義的東西可以被誰使用瘾蛋。Java還有一種默認(rèn)的訪問權(quán)限俐镐,當(dāng)沒有使用前面提到的三種關(guān)鍵詞時它將發(fā)揮作用;這種訪問權(quán)限稱為包訪問權(quán)限哺哼,即類可以訪問同一個包中的其他成員佩抹,在包之外就如同指定了private一樣。
10取董、 最簡單地復(fù)用某個類的方法就是直接使用該類的一個對象棍苹,此外還可以將那個類的一個對象置于某個新的類中————創(chuàng)建一個成員對象。新的類可以由任意數(shù)量茵汰、任意類型的其他對象以任意可以實現(xiàn)新的類中想要的功能的方式所組成枢里。把現(xiàn)有的類合成新的類稱之為組合(has-a關(guān)系),如果組合是動態(tài)發(fā)生的蹂午,那它通常被稱為聚合栏豺。在建立新類時,應(yīng)首先考慮組合画侣,因為它更加簡單靈活冰悠,其次再考慮繼承。