標籤:java 電腦 動態
做測試也挺久了,大學時沒有認真學會java,現在各個企業對測試人員要求越來越高,掌握程式設計語言的已經成了必備的技能;自己也斷斷續續學了很多次java,但都沒有好好得把java學好,在要面臨跳槽時總覺得自己的簡曆上總是少些亮點。終於下定決心,每天抽出2個鐘學習java,為了在以後的簡曆中可以寫上懂得java。
一、物件導向
現實世界中,隨處可見的一種事物就是對象,對象是事物存在的實體,如人類、書桌、電腦、高樓大廈等。把解決問題的方式簡單化,於是就會思考這些對象是由哪些部分組成。通常對象分兩部分:靜態和動態部分。靜態,即是不能動的部分,這部分稱為“屬性”,任何對象都會具備自身屬性,如:一個人,高矮,胖瘦性別、年齡等屬性。然而具有這些屬性的人會執行哪些動作也是一個值得探討的部分,這個人可以哭泣、微笑、說話、行走,這些是這個人具備的行為(動態部分),人類通過探討對象的屬性和觀察對象的行為瞭解對象。
二、類
類是封裝對象的屬性和行為的載體,反過來說具有相同屬性和行為的一類實體被稱為類。例如一個鳥類,鳥類封裝了所有鳥的共同屬性和應具有的行為,其結構:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/70/7F/wKiom1W4pf2xXa74AAELgtOY8Ho185.jpg" title="0F3O67PCM}JMG_CBH2H{B~B.jpg" alt="wKiom1W4pf2xXa74AAELgtOY8Ho185.jpg" />
三、封裝
1、封裝是物件導向編程的核心思想,將對象的屬性和行為封裝起來,而將對象的屬性和行為封裝起來的載體就是類,類通常對客戶隱藏其實現細節,這就是封裝的思想。封裝的原則是使對象以外的部分不能隨意的訪問和操作對象的內部屬性,從而避免了外界對對象內部屬性的破壞。
2、可以通過對類的成員設定一定的存取權限,實作類別中成員的資訊隱藏。
private:類中限定為private的成員,只能被這個類本身訪問。如果一個類的構造方法聲明為private,則其它類不能產生該類的一個執行個體。
default:類中不加任何存取權限限定的成員屬於預設的(default)訪問狀態,可以被這個類本身和同一個包中的類所訪問。
protected:類中限定為protected的成員,可以被這個類本身、它的子類(包括同一個包中以及不同包中的子類)和同一個包中的所有其他的類訪問。
public:類中限定為public的成員,可以被所有的類訪問。
四、繼承
物件導向編程 (OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現有類 的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充。
通過繼承建立的新類稱為“子類”或“衍生類別”。
被繼承的類稱為“基類”、“父類”或“超類”。
繼承的過程,就是從一般到特殊的過程。
要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。
在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現多重繼承,可以通過多級繼承來實現。
繼承概念的實現方式有三類:實現繼承、介面繼承和可視繼承。
五、多態
對象的多態性是指在父類中定義的屬性或方法被子類繼承之後,可以具有不同的資料類型或表現出不同的行為。這使得同一個屬性或方法在父類及其各個子類中具有不同的語義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。
Java的多態性體現在兩個方面:由方法重載實現的靜態多態性(編譯時間多態)和方法重寫實現的動態多態性(運行時多態)。
1、編譯時間多態:在編譯階段,具體調用哪個被重載的方法,編譯器會根據參數的不同來靜態確定調用相應的方法。
2、運行時多態:由於子類繼承了父類所有的屬性(私人的除外),所以子類對象可以作為父類對象使用。程式中凡是使用父類對象的地方,都可以用子類對象來代替。一個對象可以通過引用子類的執行個體來調用子類的方法。
六、方法重載
方法重載是讓類以統一的方式處理不同資料類型的手段。
一個類中可以建立多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法。
傳回值類型可以相同也可以不相同,無法以返回型別作為重載函數的區分標準。
七、方法重寫
子類對父類的方法進行重新編寫。如果在子類中的方法與其父類有相同的的方法名、傳回型別和參數表,我們說該方法被重寫 (Overriding)。
如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
子類函數的訪問修飾許可權不能低於父類的。
本文出自 “測試路” 部落格,請務必保留此出處http://yangliqin.blog.51cto.com/8836122/1679745
JAVA物件導向理解