標籤:java的oop部分
1、封裝:把一些資料類型(屬性)和有關資料類型的操作(方法)封裝起來,形成一個不可分開的實體(類);給內部的屬性私人化,提供公開的方法。當外部需要訪問時,可以不用管實體內部的具體邏輯關係,通過對象調用類內部的方法就行了;
優點:資訊隱藏(安全性)、簡化操作;
例子:一個賬戶類,屬性有:帳號、密碼等;方法有存錢、取錢等;因為要保護個人資訊,所以將屬性私人化,然後提供公開的get,set方法,這樣就不用每建立一個賬戶就要去改帳號和密碼了,只需要通過這個類的執行個體調用get、set方法就行了。
2、繼承:將一些公有的特性(屬性)和行為(方法)拿出來封裝在一個類(父類)中,其他類可以通過繼承這個類來得到這些屬性和方法,就不用每次都重新定義了;
優點:代碼複用性好、簡化操作;
例子:一個Person類,裡面有姓名、年齡等屬性,有說話、吃飯等方法;然後定義一個學生類時,只用繼承Person類,就可以不需要再定義這些屬性和方法(也可以重新定義),只要分別賦值就可以了。
3、多態:程式中定義的引用變數所指向的具體類或者通過這個引用變數發出的方法調用,在編譯的時候是不確定的,只有到運行時才知道具體指向哪個類,具體調用哪個方法;
優點:靈活、抽象、行為共用、代碼共用
例子:Person p=new Student()這就是多態;在編譯時間,p指向哪個類,p調用的方法是哪個類裡的都是不確定的,在運行時才確定;
多態裡有向上造型和向下造型;向上造型是自動轉化的,小類型自動轉換成大類型;向下造型是強制的,不是所有時候都可以轉化;如:
Father fa=new Father();
Child ci=new Child();
ci=(Child)fa;這樣編譯能通過,但是運行時會出現java.lang.ClassCastException (類轉換異常)
如果是:建立父類對象,執行個體化子類就可以進行向下造型;
補充:多態發生的前提:
1、重載:方法簽名不同:參數類型不同、參數個數不同、參數順序不同,方法名要相同;與傳回型別、存取權限無關;
2、重寫:a、方法簽名要完全相同;
b、存取權限子類重寫的方法不能小於父類裡的方法(更開放);
c、子類重寫的方法拋出的異常應該和父類方法拋出相同或者是父類方法拋出的異常的子類;
d、傳回型別:如果是基本類型,則要相同;如果是參考型別,子類方法應該與父類相同或者是父類的子類(要有內含項目關聯性)
多態中經常用到一個關鍵詞instanceof: x instanceof A:檢驗x是否為類A的對象,傳回值為boolean型。常用在equals方法的重寫裡面。
4、抽象:從一些已有的事物中抽取出我們所關心的特性(屬性)和行為(方法),從而形成一個新的事物的過程。
優點:代碼複用性好,操作方便
例子:各種各樣的汽車,我們看到都知道是車,是因為我們都有一個抽象的概念,比如說:四個輪子,能跑等等,這就是抽象!
本文出自 “Java學習” 部落格,請務必保留此出處http://12181171.blog.51cto.com/12171171/1955941
Java物件導向的基本思想理解