Java學習筆記(Java中的多態(tài))

1站削、概述

多態(tài)就是描述一個事物的多種形態(tài),如小明是一個學生,他既是人,也是學生倍奢,出現(xiàn)兩種形態(tài)捶闸。Java中多態(tài)的代碼體現(xiàn)在一個子類對象(實現(xiàn)類對象)既可以給這個子類(實現(xiàn)類對象)引用變量賦值拷沸,又可以給這個子類(實現(xiàn)類對象)的父類(接口)變量賦值。

2椭符、多態(tài)的定義與使用格式

父類的引用變量指向子類對象:父類類型 變量名 = new 子類類型();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??變量名.方法名()耻姥;

普通類多臺定義格式:父類 變量名 = new 子類()销钝;

class Fu {}? ? //創(chuàng)建父類

class Zi extends Fu {}? ? //創(chuàng)建子類

Fu f = new new Zi();? ? //類的多態(tài)使用

抽象類定義多態(tài)格式:?抽象名 變量名 = new 抽象子類();

//創(chuàng)建抽象父類

abstract class Fu

{

? ? public abstract void fun();

}

//創(chuàng)建子類重寫父類抽象方法

class Zi extends Fu

{

? ? public void fun()

? ? {

? ? ? ? System.out.println("重寫父類抽象方法");

? ? }

}

//抽象類的多態(tài)使用

Fu f = new Zi();

接口多態(tài)定義的格式:接口 變量名 = new 接口實現(xiàn)類()琐簇;

//創(chuàng)建接口

interface Fu

{

? ? public abstract void fun();

}

//創(chuàng)建實現(xiàn)類

class Zi implements Fu

{

? ? public void fun()

? ? {

? ? ? ? System.out.println("重寫接口抽象方法");

? ? }

}

//接口的多態(tài)使用

Fu f = new Zi();


3蒸健、多態(tài)的特點

?????必須有父子類關(guān)系或類實現(xiàn)接口關(guān)系,否則無法完成多態(tài)

????必須重寫父類或接口類方法

????父類引用變量指向子類對象

????父類引用變量調(diào)用方法時婉商,會調(diào)用子類重寫后的方法

4似忧、多態(tài)成員的特點

????成員變量在編譯時,參考的是引用類型所屬的類(父類)中是否有被調(diào)用的成員變量丈秩。沒有則編譯失敗盯捌。

????成員變量在運行時,參考的也是引用類型所屬的類(父類)中是否有被調(diào)用的成員變量蘑秽。沒有則運行失敗饺著。

??????????? 即:編譯和運行都是看等號的左邊(父類)

????成員方法編譯時,參考引用變量所屬的類(父類)筷狼,如果類中沒有調(diào)用的方法瓶籽,編譯失敗

????成員方法運行時匠童,參考引用變量所指的對象所屬的類(子類)埂材,并運行對象所屬類中的方法

??? ????????即:編譯看左邊(父類),運行看右邊(子類)

邏輯實例:

//創(chuàng)建父類

public class Fu {

? ? int num = 1;? ? //定義成員變量

? ? public void fun()? //定義成員方法

? ? {

? ? ? ? System.out.println("父類");

? ? }

}

//創(chuàng)建子類

public class Zi extends Fu {

? ? int num = 2;

? ? public void fun()

? ? {

? ? ? ? System.out.println("子類");

? ? }

}

//main中調(diào)用

public class Main {

? ? public static void main(String[] args)

? ? {

? ? ? ? Fu f = new Zi();

? ? ? ? System.out.println(f.num);? ? ? //成員變量編譯和運行都是參考父類的

? ? ? ? f.fun();? ? ? ? //成員方法編譯參考父類汤求,運行參考子類

? ? }

}

運行結(jié)果:

1

子類

5俏险、instanceof 關(guān)鍵字?

作用:instanceof 關(guān)鍵字用來判斷某個對象是否屬于某種數(shù)據(jù)類型

格式:boolean b = 對象 數(shù)據(jù)類型;

//兩個子類扬绪,使用兩次多態(tài)調(diào)用

Animal a1 = new Cat();

Animal a2 = new Dog();

boolean flag = a1 instanceof Cat;? ? //flag結(jié)果為true

boolean flag2 = a2 instanceof Cat;? ? //flag2結(jié)果為false

6竖独、多態(tài)轉(zhuǎn)型

向上轉(zhuǎn)型

當子類對象賦值給一個父類引用時,即向上轉(zhuǎn)型(多態(tài)本身就是向上轉(zhuǎn)型的過程)

格式:父類類型 變量名 = new 子類類型()挤牛;

eg:Fu f = new Zi();

向下轉(zhuǎn)型

通過強制類型轉(zhuǎn)換格式莹痢,將父類引用轉(zhuǎn)為子類格式

格式:子類類型 變量名 = (子類類型)父類類型的變量;

eg:Zi z = (Zi) f;??? //變量 f 實際上是指向 Zi 對象

7墓赴、多態(tài)的優(yōu)缺點

優(yōu)點:

????提高了代碼的維護性(由繼承保證)

????提高代碼復用性(有繼承保證)

????提高了代碼的擴展性:新增加的子類不影響已存在類的多態(tài)性竞膳、繼承性以及其他特性

????安全性:向上轉(zhuǎn)型將子類類型隱藏了起來

缺點:

????只能使用父類共性的內(nèi)容,無法使用子類特有的功能(如要使用就要使用向下轉(zhuǎn)型強制類型轉(zhuǎn)換)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诫硕,一起剝皮案震驚了整個濱河市坦辟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌章办,老刑警劉巖锉走,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滨彻,死亡現(xiàn)場離奇詭異,居然都是意外死亡挪蹭,警方通過查閱死者的電腦和手機亭饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁厉,“玉大人冬骚,你說我怎么就攤上這事《悖” “怎么了只冻?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長计技。 經(jīng)常有香客問我喜德,道長,這世上最難降的妖魔是什么垮媒? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任舍悯,我火速辦了婚禮,結(jié)果婚禮上睡雇,老公的妹妹穿的比我還像新娘萌衬。我一直安慰自己,他們只是感情好它抱,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布秕豫。 她就那樣靜靜地躺著,像睡著了一般观蓄。 火紅的嫁衣襯著肌膚如雪混移。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天侮穿,我揣著相機與錄音歌径,去河邊找鬼。 笑死亲茅,一個胖子當著我的面吹牛回铛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播克锣,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茵肃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娶耍?” 一聲冷哼從身側(cè)響起免姿,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榕酒,沒想到半個月后胚膊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體故俐,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年紊婉,在試婚紗的時候發(fā)現(xiàn)自己被綠了药版。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡喻犁,死狀恐怖槽片,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肢础,我是刑警寧澤还栓,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站传轰,受9級特大地震影響剩盒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慨蛙,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一辽聊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧期贫,春花似錦跟匆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埠帕,卻和暖如春垢揩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敛瓷。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斑匪,地道東北人呐籽。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蚀瘸,于是被迫代替她去往敵國和親狡蝶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容