黑馬程式設計師 09物件導向 4 多型

2021-06-20 09:02:29 字數 3389 閱讀 4363

---------------------- 

asp.net+android+ios開發

、.net培訓

、期待與您交流! ----------------------

多型:事物的多種體現形態

體現:父類引用指向自己的子類物件       fu f = new zi(); f.方法();

好處:極大提高程式的擴充套件性

前提:必須是類與類之間有關係,繼承(extends)或者是實現(implements)

通常存在覆蓋,只能使用父類的引用訪問父類中的成員

關鍵字:instanceof所屬型別判斷,於判斷關鍵字相連,使用條件是當子類型別有限,選項少的情況下.

多型中,非靜態方法的特點:

編譯時:參閱引用型變數所屬的類中是否有呼叫的方法, 沒有則編譯失敗

執行時:參閱物件所屬的類中是否有呼叫的方法

簡單概括:成員函式在多型呼叫時,編譯看左邊,執行看右邊     fu  f = new zi()

object,超類

所有物件的直接或者間接父類,該類定義的是所有物件都具備的功能.

equals方法:比較類的記憶體位址值,一般會被複寫

內部類:將乙個類定義在另乙個類裡面,裡面的類稱為內部類(巢狀類)

內部類定義在外部類的成員位置上:可以被修飾符修飾.

pirvate:將內部類在外部封裝

如果非私有,可以在外部其他類中直接建立內部類物件:

外部類名.內部類名 變數名 = 外部類物件.內部類物件;

例:outer.inner in        =  new outer().new inner();

被static修飾的內部類只能訪問外部類中的靜態成員。

外部其他類中直接訪問static內部類的非靜態成員: new outer.inner().function();

當內部類中定義了靜態成員,該內部類必須是靜態的

內部類定義在區域性位置上:可以直接訪問外部類中的成員.同時可以訪問所在區域性中的區域性變數,但必須是被final修飾的。

訪問規則:

1,內部類可以直接訪問外部類中的成員,包括私有,之所以可以直接訪問,是因為內部類中持有乙個外部類的引用

格式:外部類名.this

2外部類要訪問內部類,必須建立內部類的物件

匿名內部類:

定義的前提:必須實現介面 或者繼承乙個類

匿名內部類就是乙個匿名子類物件(帶內容的子類物件).定義的方法最好不要超過3個

格式:new  父類或介面().方法

throw

|__error (錯誤,停止程式)

|__exception(異常,除錯後繼續執行)

異常是對問題的描述,把問題封裝成物件,throwable 所有類及監理的物件都具備可拋性

好處:將問題進行封裝,將正常**和問題**分離,提高閱讀性

呼叫到丟擲異常的功能時,丟擲幾個處理幾個

乙個try對應多個catch,多個catch中父類catch放在最下面,catch內需要定義針對性的處理方式,不要簡單定義printstacktrace語句

printstacktrace

:jvm預設使用,列印異常的堆疊跟蹤資訊

/異常名稱   異常資訊    異常出現位置

printstacktrace(printstream s)

通常用該方法將異常內容儲存在日誌檔案中,以便查閱

在函式上宣告異常,便於提高安全性,讓呼叫者處理,不處理就編譯失敗

try

catch(異常類 變數)

finally

finally**塊只有一種情況不會被執行。就是在之前執行了system.exit(0)

對多異常的處理

1:宣告異常時,建議宣告更為具體的異常,這樣可以處理的更具體

2:宣告幾個異常,就有幾個catch塊,如果多個catch塊中出現繼承關係,父類異常catch塊放在最下面

自定義異常:異常自定義 必須繼承exception是異常體系的特點

異常類和異常物件都要被丟擲,具備可拋性是 throwable體系中的獨有特點

throws: 使用在函式上連線異常類,可以連線多個,用逗號(,)隔開

throw:使用在函式內,連線著異常物件

自定義異常時,如果該異常發生無法繼續進行運算,就讓該異常繼承runtime異常

異常區別:

1,編譯時被檢測的異常,能處理,處理完程式繼續執行的,繼承exception

2,編譯時不被檢測:不能處理,讓程式停止,繼承執行時異常,runtime exception以及它的子類

異常在子父類覆蓋的體現:

1,子類在覆蓋父類時,如果父類的方法丟擲異常,子類的覆蓋方法只能丟擲父類的異常或者該異常的子集

2,如果父類方法丟擲多個異常,子類在覆蓋方法時,只能丟擲父類異常的子集

3,如果父類或者介面的方法中沒有異常丟擲,那麼子類在覆蓋方法時,也不能丟擲異常

如果子類方法發生異常,就必須進行try catch 處理,絕對不能丟擲

4,如果函式宣告了異常,呼叫者需要進行處理,處理方法可try可throw

當函式內有throw丟擲異常物件,並未進行處理,要在函式上宣告.如果丟擲的runtime,可以不用宣告

---------------------- 

asp.net+android+ios開發

、.net培訓

、期待與您交流! ----------------------

黑馬程式設計師 物件導向 多型

asp.net unity開發 net培訓 期待與您交流!多型 可以理解為事物存在的多種體現形態。父類的引用指向子類的物件。1.多型的體現 父類的引用指向子類的物件,父類的引用接收子類的物件。2.多型的前提 類與類之間必須是繼承或者實現的關係。通常還有乙個前提 就是覆蓋 3.多型的好處 大大的提高了...

黑馬程式設計師 《物件導向 多型 03

asp.net android ios開發 net培訓 期待與您交流!多型 某一類事物的多種存在形態 因為有的繼承,所以有了父類和子類關係,那麼就提現出來了多型的特性。當一類事物之間肯定有存在某種關係,例如兒子和父親,學生和人,工人和人,那麼他們也有共性,那麼當我們劃分的越細,那麼子類就越多,那麼我...

黑馬程式設計師 C 物件導向之多型

asp.net unity開發 net培訓 期待與您交流!把一組相關的物件放到乙個陣列或集合中,然後呼叫它們名字相同的方法,在這種情況下,物件導向的多型性就體現出來了,這些物件可以不是相同型別的物件。如果它們都繼承自某乙個類,可以把這些派生類的物件放到乙個陣列中。如果這些物件都有同名方法,也可以呼叫...