封裝 作用
提高程式的安全性,保護資料。
隱藏**的實現細節。
統一介面。
系統可維護增加了 繼承
方法的重寫
為什麼需要重寫:
1.父類的功能,子類不一定需要,或則不滿足!
a a=new a();多型a.text();
//其中a類輸出a,b類輸出b, a類繼承b類
b b=new a(); //子類重寫父類的方法
b.text();
//結果為 a a
即同一方法可以根據傳送物件的不同而採用多種不同的行為方式。
乙個物件的實際型別是確定的,但可以指向物件的引用的型別有很多
多型存在的條件
注意:多型是方法的多型,屬性沒有多型性。
乙個物件的實際型別是確定的
new
student()
;new
person()
;
可以指向的引用型別就不確定了,父類的引用指向子類
student 能呼叫的方法都自己的或者繼承父類的!
student s1=
newstudent()
;//person 父型別,可以指向子類,但是不能呼叫子類獨有的方法
person s2=
newstudent()
;object s3=
newstudent()
;
物件能執行那些方法,主要看物件左邊的型別,和右邊關係不大!
(
(student)s2.
eat();
//子類重寫父類的方法,執行子類的方法
多型注意事項:
多型是方法的多型,屬性沒有多型
父類和子類,有聯絡 型別轉換異常! classcastexception!
存在條件:繼承關係,方法需要重寫,父類醫用指向子類物件! father f1=new son();
static 方法:屬於類,它不屬於例項
final 常量
private 方法
instanceof 關鍵字:(型別轉換)引用型別,判斷乙個物件是什麼型別
system.out.
println
(x instanceofy)
;//x,y必須存在關係,不然編譯會報錯!
person obj=
newstudent()
;//person是student的父類
//student將這個物件轉換為student型別,我們就可以使用student型別的方法
((student)obj)
.say()
;
子類轉換為父類,會丟自己本來一些方法以及屬性!
多型總結
父類引向子類的物件
把父類轉換為子類,向上轉型 父類(可以是介面)父類型別 變數名=new 子類型別();
把子類轉換為父類,向下轉型 強制轉換(會丟方法)子類型別 變數名=(子類型別) 父類變數名;
方便方法的呼叫,減少重複的**!
為什麼要轉型?
當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤。也就是說,不能呼叫子類擁有,而父類沒有的方法。編譯都錯誤,更別說執行了。這也是多型給我們帶來的一點"小麻煩"。所以,想要呼叫子類特有的方法,必須做向下轉型。
優先順序的問題
當乙個類,既繼承乙個父類,又實現若干個介面時,父類中的成員方法與介面中的預設方法重名,子類就近選擇執行父類的成員方法。
預設方法
介面中,有多個預設方法時,實現類都可繼承使用。如果預設方法有重名的,必須重寫一次。
封裝,繼承,多型
一 1 封裝 該隱藏隱藏,該公開的公開 屬性隱藏,同時提供get set方法 有些方法應該隱藏 方法宣告公開,實現隱藏。實現的改變對架構的影響最小 2 繼承 一般 特殊 單繼承 乙個類最多只能有乙個直接父類。類之間可以形成樹狀關係 根據訪問許可權,子類如果可以訪問父類的屬性和方法,就能繼承 priv...
繼承 封裝 多型
一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。封裝的意義 封裝的意義在於保護或者防止 資料 被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它...
封裝 繼承 多型
一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。封裝的意義 封裝的意義在於保護或者防止 資料 被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它...