Java—面向對象編程

1、繼承編程

咱們在建立一些類時,會發現他們之間存在相同的屬性和方法,如設計一個動物表示類:
Java—面向對象編程
Java—面向對象編程
Java—面向對象編程
像這樣的代碼就存在了大量的冗餘代碼,仔細分析會發現這三個類有相同的eat方法和相同的name屬性。從邏輯上分析,Cat和Bird都是Animal,咱們就可讓二者繼承Animal類,這樣Animal就是被繼承的類,也叫父類,基類或者超類,而Bird和Cat叫子類或者派生類。他們之間就構成了繼承關係。
繼承的語法規則:
1.繼承使用extends指定父類。
2.在Java中,一個子類只能繼承一個父類。
3.子類會繼承父類全部public的方法和字段,而對於父類中全部private的方法和字段是沒法訪問的。
4.子類能夠用super關鍵字獲得父類實例的引用。ide

上面的代碼使用繼承改編後以下:
Java—面向對象編程oop

Java—面向對象編程
經過上述代碼咱們能夠看出繼承能夠使代碼達到重用的效果。
但若是把name改爲private時,子類就沒法訪問父類。
如圖:Java—面向對象編程
可是若是使用public就違背了oop語言三大特性之一:封裝,因此把字段改成protected是最佳的解決辦法。看以下代碼
Java—面向對象編程
分析上述代碼報錯的緣由能夠知道其餘包中的類,對於protected修飾的字段和方法不能夠訪問,對於類的調用者來講,protected修飾的字段和方法也是不能夠訪問的。this

此外,若是用final關鍵字修飾類,這個類也是不能被繼承的。看以下代碼:
Java—面向對象編程設計


2、組合3d

和繼承相似,組合也能達到代碼重用的效果。組合表示has- a,繼承表示is- a,如用一個類表示學校,學校裏有學生也有老師,示例以下:
Java—面向對象編程對象


3、多態blog

動態綁定也叫運行時綁定即多態,發生動態綁定的前提是:
1.向上轉型,父類引用子類對象
向上轉型的三種狀況:
(1)直接賦值
Java—面向對象編程
(2)方法傳參
Java—面向對象編程
(3)方法返回
Java—面向對象編程
2.子類和父類有同名的覆蓋方法
3.經過父類的引用,調用該重寫方法
以下就是動態綁定的實例:
Java—面向對象編程
Java—面向對象編程
運行結果:
Java—面向對象編程
那麼使用多態有什麼好處呢?
1.下降了類的調用者對類的使用成本
2.下降了圈複雜度,避免了使用大量的if-else
3.可擴展能力更強
注意super和this的區別,super表示父類對象的引用,this表示當前對象的引用。繼承


4、抽象類接口

爲了使代碼可以被繼承,須要創造抽象類。好比創造一個抽象類表示形狀:
Java—面向對象編程

抽象類不能被實例化,抽象方法也不能是private,抽象類中也能夠包含其餘非抽象類方法及字段。
Java—面向對象編程


5、接口

接口是抽象類的更進一步,包含的方法都是抽象方法,字段只能包含靜態常量。一個類能夠繼承一個類,而且同時實現多個接口。如:
Java—面向對象編程Java—面向對象編程
Java—面向對象編程

(1)接口使用interface來實現
(2)接口中的方法必定是抽象方法,所以能夠省略abstract
(3)接口中的方法必定是public,所以能夠省略public
(4)接口不能單獨被實例化
(5)接口能夠繼承一個接口

剛涉及Java語言的面向對象編程,還有不少深邃的東西沒有挖掘出來,有待後續。

相關文章
相關標籤/搜索