面向過程是以時間為順序的,組成單位是函數(shù)。
面向?qū)ο笫且惶姿枷?。它來源于人類對于客觀世界的認識的一般規(guī)律。
1什么是對象?
什么都是對象!客觀存在的就是對象。
對一個事物來說,一是它有什么?(屬性)二是它能做什么?(方法)
2為什么面向?qū)ο?BR>
它人類看待客觀事物的一般規(guī)律。
人看到事物,首先會想到它能做什么,功能,存在的價值。并不太關心它的屬性。
========================================
要注意聯(lián)系實際來搞懂面向?qū)ο螅热缑嬖囘@件事,實際上,公司是想測試你是否能提供 公司需要的方法,公司并不關心你實現(xiàn)的細節(jié)。錄用后,就是開始去調(diào)用你的方法。如果不能很好的實現(xiàn)方法,就可能被辭退。
那么那些筆試、測試就是想看你是否有知識,知識就是屬性,記住屬性與方法之間是有聯(lián)系的,也就是沒有公司所需的知識,可以斷定這個人肯定不會有公司需要的方法。
一個事物的方法的實現(xiàn)細節(jié)是對外界屏蔽的。
那么,之前提交的簡歷是什么呢,那就是一個方法列表阿,API。比如年齡22,表明你的方法可以很好的被調(diào)用;未婚,告訴別人,你可以加班,放心用。
項目1,2,3,每個項目后面一定要寫上你在項目中用到什么語言,否則HR的人是不知道你想告訴他們什么,他們只關心公司想要一個有JSP開發(fā)經(jīng)驗,或者什么什么技術有經(jīng)驗的人。您敘述一大堆項目的事情,沒有任何意義。所以簡歷不要瞎寫。
面試是什么,就是想真正調(diào)用一下你的方法,測試一下。
=======================================
那么社會的運轉就是各個對象的方法的相互調(diào)用。
方法列表公開,方法的實現(xiàn)細節(jié)屏蔽。
屬性,可見和不可見
一個方法的實現(xiàn)細節(jié)誰知道呢?只有這個對象的生成者。
那么人看待客觀世界的認識,就是通過類。人類認識的是類。
類是一系列對象的抽象,對象的模版。
一類事物,屬性、方法。這類對象也肯定有這些屬性和方法。
為什么面向?qū)ο蟮牡诙c,就是使得開發(fā)的系統(tǒng)各思其職,各盡所能。也就是低耦合,高內(nèi)聚。
為什么,電腦中的部件可以很容易的更換成為其他廠商的,就是因為主板與具體部件的連接是松散的;那為什么,可以很容易的換到其他廠商的呢,是因為各個廠商遵循著標準接口。
比如硬盤的use(電源接口,數(shù)據(jù)接口),每個廠商都必須實現(xiàn),而且硬盤是一個類的概念,有屬性,比如尺寸。
各個廠商不能在別處下功夫,只能對硬盤內(nèi)部進行調(diào)整,提高性能,才會免予被替換。
高內(nèi)聚是指完成功能的最小化。
低耦合表現(xiàn)在提高了對象的復用性,比如中間件。
最后總結一下,面向過程是先有算法,后有數(shù)據(jù)結構。由若干個過程相互調(diào)用完成。
面向?qū)ο?,則是先有數(shù)據(jù)結構,后有算法,以對象為中心,開發(fā)一系列類,拿到特定對象,通過對象之間通信,對象設計要簡單。
類(共性)--〉對象(類允許對象在滿足共性的同時,存在個性)
一個類,則是一個新的數(shù)據(jù)類型。
實例變量與局部變量命名沖突,則使用局部變量,除非使用this.來指定某個屬性。
調(diào)用構造器只是生成對象步驟的最后一步,不是構造對象本身。
方法中使用了this,this表示當前對象,當前對象就是誰調(diào)用該方法,誰就是當前對象。
class TestClass{
String name;
public void printAll(String name)
{
this.name = name;
}
}
上面必須添加上this.來引用實例變量name。因為在局部變量和實例變量沖突時,使用局部變量。
finalize()不是析構方法,因為不能存在真正的釋放空間操作。
方法參數(shù),簡單類型傳值,對象類型傳引用(一個實際存儲[堆中]的首地址)。
假如方法中,引用賦予一個新的對象,那么方法執(zhí)行完以后,該引用和實際地址消失。傳入引用所指向的對象屬性不變。
Overloading,修飾符和返回值可以不同,但參數(shù)列表(參數(shù)類型個數(shù)或者排列順序)一定要不同。
Overloading,是編譯時多態(tài)。那么它要看編譯時類型。
Overloading,也存在于父與子的關系當中。父有方法,子類可以有同名方法,只有參數(shù)列表不同才是重載。
構造器(構造方法可以重載),通過this();可以調(diào)用本類無參構造方法。
在其他構造器調(diào)用其它構造器,那么需要this關鍵字,并且必須放置于第一行。
如果一個類不寫任何構造函數(shù),系統(tǒng)會默認添加無參空構造方法。不要依賴系統(tǒng)默認行為!自己最好寫上。javap查看實際代碼。
對于簡單類型,如果調(diào)用方法傳入?yún)?shù)的類型不存在,那么就采用向上匹配原則進行查找。
m(byte)不存在,就用m(short)。(實際上long是int的父類,int是short的父類)
封裝
屬性盡可能私有。
方法盡可能公開。
private只有類內(nèi)部本身能訪問。
default只有同包能訪問。
protected只有存在繼承關系,才能訪問。