隨筆-159  評論-114  文章-7  trackbacks-0

          面向過程是以時間為順序的,組成單位是函數。

          面向對象是一套思想。它來源于人類對于客觀世界的認識的一般規律。

          1什么是對象?

          什么都是對象!客觀存在的就是對象。

          對一個事物來說,一是它有什么?(屬性)二是它能做什么?(方法)



          2為什么面向對象

          它人類看待客觀事物的一般規律。

          人看到事物,首先會想到它能做什么,功能,存在的價值。并不太關心它的屬性。

          ========================================

          要注意聯系實際來搞懂面向對象,比如面試這件事,實際上,公司是想測試你是否能提供 公司需要的方法,公司并不關心你實現的細節。錄用后,就是開始去調用你的方法。如果不能很好的實現方法,就可能被辭退。

          那么那些筆試、測試就是想看你是否有知識,知識就是屬性,記住屬性與方法之間是有聯系的,也就是沒有公司所需的知識,可以斷定這個人肯定不會有公司需要的方法。

          一個事物的方法的實現細節是對外界屏蔽的。

          那么,之前提交的簡歷是什么呢,那就是一個方法列表阿,API。比如年齡22,表明你的方法可以很好的被調用;未婚,告訴別人,你可以加班,放心用。

          項目1,2,3,每個項目后面一定要寫上你在項目中用到什么語言,否則HR的人是不知道你想告訴他們什么,他們只關心公司想要一個有JSP開發經驗,或者什么什么技術有經驗的人。您敘述一大堆項目的事情,沒有任何意義。所以簡歷不要瞎寫。

          面試是什么,就是想真正調用一下你的方法,測試一下。

          =======================================

          那么社會的運轉就是各個對象的方法的相互調用。

          方法列表公開,方法的實現細節屏蔽。

          屬性,可見和不可見

          一個方法的實現細節誰知道呢?只有這個對象的生成者。



          那么人看待客觀世界的認識,就是通過類。人類認識的是類。

          類是一系列對象的抽象,對象的模版。

          一類事物,屬性、方法。這類對象也肯定有這些屬性和方法。



          為什么面向對象的第二點,就是使得開發的系統各思其職,各盡所能。也就是低耦合,高內聚。

          為什么,電腦中的部件可以很容易的更換成為其他廠商的,就是因為主板與具體部件的連接是松散的;那為什么,可以很容易的換到其他廠商的呢,是因為各個廠商遵循著標準接口。

          比如硬盤的use(電源接口,數據接口),每個廠商都必須實現,而且硬盤是一個類的概念,有屬性,比如尺寸。

          各個廠商不能在別處下功夫,只能對硬盤內部進行調整,提高性能,才會免予被替換。

          高內聚是指完成功能的最小化。

          低耦合表現在提高了對象的復用性,比如中間件。



          最后總結一下,面向過程是先有算法,后有數據結構。由若干個過程相互調用完成。

          面向對象,則是先有數據結構,后有算法,以對象為中心,開發一系列類,拿到特定對象,通過對象之間通信,對象設計要簡單。

          類(共性)--〉對象(類允許對象在滿足共性的同時,存在個性)

          一個類,則是一個新的數據類型。



          實例變量與局部變量命名沖突,則使用局部變量,除非使用this.來指定某個屬性。

          調用構造器只是生成對象步驟的最后一步,不是構造對象本身。

          方法中使用了this,this表示當前對象,當前對象就是誰調用該方法,誰就是當前對象。

          class TestClass{
          String name;
          public void printAll(String name)
          {
             this.name = name;
          }

          }

          上面必須添加上this.來引用實例變量name。因為在局部變量和實例變量沖突時,使用局部變量。





          finalize()不是析構方法,因為不能存在真正的釋放空間操作。



          方法參數,簡單類型傳值,對象類型傳引用(一個實際存儲[堆中]的首地址)。

          假如方法中,引用賦予一個新的對象,那么方法執行完以后,該引用和實際地址消失。傳入引用所指向的對象屬性不變。



          Overloading,修飾符和返回值可以不同,但參數列表(參數類型個數或者排列順序)一定要不同。

          Overloading,是編譯時多態。那么它要看編譯時類型。

          Overloading,也存在于父與子的關系當中。父有方法,子類可以有同名方法,只有參數列表不同才是重載。

          構造器(構造方法可以重載),通過this();可以調用本類無參構造方法。
          在其他構造器調用其它構造器,那么需要this關鍵字,并且必須放置于第一行。

          如果一個類不寫任何構造函數,系統會默認添加無參空構造方法。不要依賴系統默認行為!自己最好寫上。javap查看實際代碼。


          對于簡單類型,如果調用方法傳入參數的類型不存在,那么就采用向上匹配原則進行查找。

          m(byte)不存在,就用m(short)。(實際上long是int的父類,int是short的父類)



          封裝

          屬性盡可能私有。

          方法盡可能公開。

          private只有類內部本身能訪問。

          default只有同包能訪問。

          protected只有存在繼承關系,才能訪問。



          posted on 2005-11-28 23:43 北國狼人的BloG 閱讀(508) 評論(2)  編輯  收藏 所屬分類: 達內學習總結

          評論:
          # re: 達內第十一天,Core Java IV 2005-11-30 00:04 | 非魚
          高內聚:模塊內部依賴、關聯高。

          低耦合:模塊之間的關聯、依賴盡可能小并且單一。

          在封裝中,方法也是盡可能不公開的,package和protected較常見。  回復  更多評論
            
          # re: 達內第十一天,Core Java IV [未登錄] 2008-08-22 11:29 | 理由
          達內是什么公司?軟件培訓嗎?只聽說了北大青鳥。  回復  更多評論
            
          主站蜘蛛池模板: 城固县| 育儿| 金阳县| 天门市| 肃北| 磐石市| 新竹市| 洪洞县| 聊城市| 信宜市| 丹凤县| 大渡口区| 班玛县| 江永县| 隆回县| 莲花县| 海安县| 安图县| 融水| 高密市| 青浦区| 宣威市| 宁国市| 祁连县| 上犹县| 罗甸县| 英德市| 加查县| 宁城县| 杨浦区| 昌乐县| 汶上县| 八宿县| 宣威市| 和平区| 米林县| 江达县| 长垣县| 绩溪县| 鄂尔多斯市| 华宁县|