Java SE 第19 20講 多型

2021-09-14 00:55:17 字數 1269 閱讀 3974

多型:子類就是父類說法是對的,父類是子類說法是錯的。比如男人是人,女人是人,但是不能說人是男人,或人是女人。

一句話理解多型:父型別的引用可以指向子型別的例項,或者說子類的物件

flower rose = new pose();//體現多型

父型別 引用 = 子型別的例項

parent p = new child();

p.sing();

p指向了child型別的物件,所以呼叫child的sing();方法

p本身是乙個parent型別的

必須要在parent中也要存在sing()方法時才能去呼叫。

animal a = new dog();

dog dog =(dog)a;

a實際指向什麼型別,就可以轉換成什麼型別的引用;

a實際指向dog型別,就可以轉換成dog型別的引用;

想要使用子類中父類沒有的方法時,使用向下型別轉換

多型:父型別的引用可以指向子型別的物件。

parent p = new child();當使用多型方式呼叫方法時,首先檢查父類中是否有sing()方法,如果沒有則編譯錯誤;如果有,再去呼叫子類的 sing()方法。

一共有兩種型別的強制型別轉換:

a) 向上型別轉換(upcast):比如說將 cat 型別轉換為 animal 型別,即將子型別轉換為父型別。對於向上型別轉換,不需要顯式指定。

b) 向下型別轉換(downcast):比如將 animal 型別轉換為 cat 型別。即將父型別轉換為子型別。對於向下型別轉換,必須要顯式指定(必須要使用強制型別轉換)。

抽象類(abstract class):使用了 abstract 關鍵字所修飾的類叫做抽象類。抽象類無法例項化,也就是說,不能 new 出來乙個抽象類的物件(例項)。

抽象方法(abstract method):使用 abstract 關鍵字所修飾的方法叫做抽象方法。抽象方法需要定義在抽象類中。相對於抽象方法,之前所定義的方法叫做具體方法(有宣告,有實現)。

如果乙個類包含了抽象方法,那麼這個類一定是抽象類。

如果某個類是抽象類,那麼該類可以包含具體方法(有宣告、有實現)。

如果乙個類中包含了抽象方法,那麼這個類一定要宣告成 abstract class,也就是說,該類一定是抽象類;反之,如果某個類是抽象類,那麼該類既可包含抽象方法,也可以包含具體方法。

無論何種情況,只要乙個類是抽象類,那麼這個類就無法例項化。

在子類繼承父類(父類是個抽象類)的情況下,那麼該子類必須要實現父類中所定義的所有抽象方法;否則,該子類需要宣告成乙個 abstract clas

JavaSE 基礎(封裝,繼承,多型)

繼承是從已有類得到繼承資訊建立新類的過程。提供繼承資訊的類被稱為父類 超類 基類 得到繼承資訊的類被稱為子類 派生類 繼承讓變化中的軟體系統有了一定的延續性,同時繼承也是封裝程式中可變因素的重要手段。通常認為封裝是把資料和運算元據的方法繫結起來,對資料的訪問只能通過已定義的介面。物件導向的本質就是將...

筆記 聖思園 JavaSE 第4講 運算子

複習上節 變數在使用前,必須賦值 賦值時,不能將表示範圍大的變數值賦值給表示範圍小的變數,只能強制型別轉換 賦值是否成功,取決於數值型別 1.當有若干變數參與運算時,結果的型別,取決於這些變數中,表示範圍最大的那個變數型別 比如參與運算的變數有int,double,short,那麼最後的結果型別是 ...

白話文講多型

對於多型的理解一直都僅限於那三句話 1.父類的引用,引用子型別的例項 2.子型別裡面重寫父型別的方法 3.父型別的引用呼叫子型別的重寫後的方法 但是其什麼意思一直都是懵懵懂懂。也許比較厲害的人,一看就知道什麼意思。呵呵,沒辦法,我就是比較笨,看不懂,所以,今天用通俗易懂的白話文,來補充一下多型。co...