Java學(xué)習(xí)筆記 9 - 面向?qū)ο蠡A(chǔ)(繼承盲镶、多態(tài) )

本文主要內(nèi)容
1侥袜、繼承 extends
2、抽象 abstract
3溉贿、接口 interface
4枫吧、多態(tài)
5、instanceof關(guān)鍵字

01 繼承 extends

A宇色、繼承的格式:class 子類 extends 父類 {}
B九杂、繼承注意事項(xiàng)
1、子類繼承父類后宣蠕,將直接擁有父類所有非私有的屬性和方法
2例隆、java中類只能單繼承,不能多繼承抢蚀,但是可以多層繼承(一個類的父類可以再去繼承另外的父類)镀层。
class A{}
class B{}
class C extends A,B{} // C類不可以同時繼承A類和B類
3、所有的類都直接或間接繼承了Object類皿曲,多個類可以繼承同一個父類
class A{}
class B extends A{}
class C extends A{} // 類B和類C都可以繼承類A
4唱逢、繼承的缺點(diǎn)是,類與類之間耦合度過高
5屋休、子類坞古、父類中出現(xiàn)同名變量或方法時,訪問子類中的變量或方法時使用 this關(guān)鍵字劫樟,訪問父類中的變量或方法時使用super關(guān)鍵字
6痪枫、子類的對象調(diào)用成員變量的時候,子類自己有,使用子類,子類自己沒有調(diào)用的父類
C、重寫override
1毅哗、子類重寫(override)父類的方法時听怕,父類的私有方法,子類不能重寫虑绵。并且override時必須要保證子類權(quán)限大于等于父類權(quán)限
2尿瞭、子類方法和要重寫的父類的方法:方法的方法名和參數(shù)列表都要一樣
3、關(guān)于方法的返回值:
如果是基本數(shù)據(jù)類型,子類的方法和重寫的父類的方法返回值類型必須相同
如果是引用數(shù)據(jù)類型,子類的方法和重寫的父類的方法返回值類型可以相同或者子類方法的返回值類型是父類方法返回值類型的子類

02 重載與重寫
   重載:與權(quán)限修飾符(public private 默認(rèn))無關(guān)
       方法名:重載的兩個方法的方法名必須相同
       形參列表:形參類型的順序不同翅睛、形參的個數(shù)不同声搁、形參的類型不同。三者至少滿足一個
       返回值類型:重載與返回值類型無關(guān)
   重寫:
       子類方法的權(quán)限修飾符>=父類的方法的權(quán)限
       方法名: 子類方法和父類方法必須相同
       形參列表: 子類方法和父類方法的形參列表必須相同
       返回值類型:
           返回基本數(shù)據(jù)類型時捕发,子類的方法和重寫的父類的方法返回值類型必須相同
           返回引用數(shù)據(jù)類型,子類的方法和重寫的父類方法返回值類型可以相同或者子類方法的
03 抽象 abstract

A疏旨、抽象類、方法定義的格式
abstract class 類名 { }
public abstract 返回值類型 方法名(參數(shù));
B扎酷、抽象類的特點(diǎn)
1檐涝、抽象類用abstract修飾,抽象方法必須寫在抽象類中
2、抽象類中可以沒有抽象方法谁榜,可以定義帶有方法體的方法
3幅聘、抽象方法,沒有主體
4窃植、抽象類不能new,只能被繼承帝蒿,然后子類對父類的抽象方法進(jìn)行重寫。如果子類不想重寫父類的抽象方法巷怜,可以將自己定義為抽象類
5葛超、測試抽象類,只能通過創(chuàng)建他的子類的對象延塑,使用子類的對象調(diào)用方法
6绣张、子類要實(shí)現(xiàn)抽象類中所有的抽象方法,才能創(chuàng)建子類對象页畦,否則子類還是一個抽象類
7胖替、abstract不可以和private、static豫缨、final一起使用独令。
8、因?yàn)槌橄笮枰宇愔貙懞冒牛绻割愂撬接械娜技宇惥蜔o法重寫。
C舍败、抽象類的設(shè)計思想:保證繼承體系的完整性招狸,面對共性類型操作會更簡單

04 接口 interface

A、接口定義格式
public interface 接口名 {
抽象方法1;
抽象方法2;
抽象方法3;
}
B邻薯、接口定義步驟
1裙戏、使用interface代替了原來的class,其他步驟與定義類相同
2厕诡、接口中的方法均為公共訪問的抽象方法
3累榜、接口中無法定義普通的成員變量
C、接口的特點(diǎn)
1灵嫌、接口中定義的抽象方法格式為:public abstract 返回值類型 方法名(參數(shù)列表)
方法中壹罚,修飾符只能為public,如果不寫,默認(rèn)也是public寿羞,修飾符public abstract 可以省略
2猖凛、接口中不能定義普通的成員變量。只能定義常量绪穆,格式為:public static final 數(shù)據(jù)類型 變量名=值辨泳,定義時可以不寫修飾符public static final
3虱岂、接口中常量的使用,可直接使用接口名.常量
D漠吻、接口的實(shí)現(xiàn)類
1量瓜、類與接口的關(guān)系為實(shí)現(xiàn)關(guān)系,即類實(shí)現(xiàn)接口途乃,使用關(guān)鍵字:implements
2、類實(shí)現(xiàn)接口的格式
class 類 implements 接口 {
重寫接口中方法
}
3扔傅、類實(shí)現(xiàn)接口的特點(diǎn)
1)接口的實(shí)現(xiàn)耍共,需要重寫接口中的全部抽象方法
2)實(shí)現(xiàn)類中的實(shí)現(xiàn)方法的權(quán)限必須和接口中一致。實(shí)現(xiàn)類中如果沒有寫方法的權(quán)限修飾
符猎塞,默認(rèn)為default
3)如果實(shí)現(xiàn)類只實(shí)現(xiàn)了接口中的一部分方法试读,那么這個實(shí)現(xiàn)類是一個抽象類
4)一個類可以實(shí)現(xiàn)多個接口,并且不存在安全隱患荠耽,因?yàn)榻涌谥械姆椒]有方法體钩骇,方法
的實(shí)現(xiàn)要依賴實(shí)現(xiàn)類
5)一個接口可以繼承多個接口
E、接口的設(shè)計思想:暴露規(guī)則铝量,降低耦合倘屹,提高擴(kuò)展性
F、接口常見問題
1慢叨、java中有多繼承嗎纽匙?類中只能單繼承,接口之間可以多繼承
2拍谐、一個類如果實(shí)現(xiàn)類接口,有幾種操作方法烛缔?
方法一:實(shí)現(xiàn)類是非抽象類,就需要重寫接口中所有的抽象方法.
方法二:實(shí)現(xiàn)類也聲明為抽象類,那么實(shí)現(xiàn)類可以不重寫接口中的抽象方法。

04 接口和抽象類

A轩拨、相同點(diǎn)
1践瓷、都不能直接實(shí)例化
2、都包含抽象方法
3亡蓉、都可以被繼承
B晕翠、不同點(diǎn)
1、抽象類是事物中應(yīng)具備的功能寸宵,接口是事物中的額外功能
2崖面、一個類只能繼承一個抽象類,但是可以實(shí)現(xiàn)多個接口
3梯影、抽象類中提供非抽象方法的實(shí)現(xiàn)巫员,接口只提供抽象方法
4、抽象類是這個事物中應(yīng)該具備的你內(nèi)容, 繼承體系是一種 is..a關(guān)系
接口是這個事物中的額外內(nèi)容,繼承體系是一種 like..a關(guān)系
C甲棍、二者的選用
1简识、 優(yōu)先選用接口,盡量少用抽象類;
2、 需要定義子類的行為,又要為子類提供共性功能時才選用抽象類;

05 多態(tài)

A、多態(tài)調(diào)用的三種格式
對象的多態(tài)調(diào)用方式: 父類類型或者接口類型 變量 = new 子類的對象();
1七扰、普通類的繼承可以實(shí)現(xiàn)多態(tài)的引用
2奢赂、抽象類的繼承可以實(shí)現(xiàn)多態(tài)的引用
3、接口的實(shí)現(xiàn)可以實(shí)現(xiàn)多態(tài)的引用
B颈走、多態(tài)成員特點(diǎn)
多態(tài)調(diào)用方法時膳灶,運(yùn)行的是子類的重寫方法。
1立由、成員變量:編譯用父類轧钓,運(yùn)行用父類
多態(tài)引用時,調(diào)用成員變量時锐膜,編譯時參考父類中是否有該變量毕箍,如果有編譯成功,否則失敗道盏。運(yùn)行時運(yùn)行的是父類中的變量
簡而言之:編譯和運(yùn)行都參考等號的左邊而柑。編譯運(yùn)行看左邊。
2荷逞、成員方法:編譯用父類媒咳,運(yùn)行用子類
多態(tài)引用時,調(diào)用成員方法時颅围,編譯時參考父類中是否有該方法伟葫,如果有編譯成功,否則失敗院促。運(yùn)行時運(yùn)行的是子類中的重寫的方法
簡而言之:編譯看左邊筏养,運(yùn)行看右邊。
總結(jié):
1常拓、多態(tài)調(diào)用時渐溶,調(diào)用的是成員變量無論是靜態(tài)還是非靜態(tài),編譯運(yùn)行都是看父類弄抬。
2茎辐、多態(tài)調(diào)用時,調(diào)用的是靜態(tài)方法掂恕,編譯運(yùn)行都是看父類拖陆,調(diào)用的是非靜態(tài)方法,編譯看父類運(yùn)行看子類的重寫方法懊亡。
C依啰、多態(tài)的轉(zhuǎn)型
1、多態(tài)的轉(zhuǎn)型分為:向上轉(zhuǎn)型與向下轉(zhuǎn)型
2店枣、向上轉(zhuǎn)型:當(dāng)有子類對象賦值給一個父類引用時速警,便是向上轉(zhuǎn)型
使用格式:
父類類型 變量名 = new 子類類型();
如:Person p = new Student();
3叹誉、向下轉(zhuǎn)型:一個已經(jīng)向上轉(zhuǎn)型的子類對象可以使用強(qiáng)制類型轉(zhuǎn)換的格式,將父類引用轉(zhuǎn)為子類引用
使用格式:
子類類型 變量名 = (子類類型) 父類類型的變量;
如:Student stu = (Student) p; //變量p 實(shí)際上指向Student對象
4闷旧、當(dāng)不需要面對子類類型時长豁,通過提高擴(kuò)展性,或者使用父類的功能就能完成相應(yīng)的操作忙灼,這時就可以使用向上轉(zhuǎn)型匠襟。
當(dāng)要使用子類特有功能時,就需要使用向下轉(zhuǎn)型缀棍。在轉(zhuǎn)換之前必須使用instanceof做類型判斷宅此。

06 instanceof關(guān)鍵字

A、類的比較:instanceof關(guān)鍵字爬范,判斷某個對象是否屬于某種數(shù)據(jù)類型
B、使用格式: boolean b = 對象 instanceof 數(shù)據(jù)類型;
舉例:
Person p1 = new Student(); // 前提條件弱匪,學(xué)生類已經(jīng)繼承了人類
Person p2 = new Student();
boolean flag = p1 instanceof Student; //flag結(jié)果為true
boolean flag2 = p2 instanceof Teacher; //flag結(jié)果為false
C青瀑、instanceof只能用于有實(shí)現(xiàn)關(guān)系的類比較

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市萧诫,隨后出現(xiàn)的幾起案子斥难,更是在濱河造成了極大的恐慌,老刑警劉巖帘饶,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哑诊,死亡現(xiàn)場離奇詭異,居然都是意外死亡及刻,警方通過查閱死者的電腦和手機(jī)镀裤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缴饭,“玉大人暑劝,你說我怎么就攤上這事】怕В” “怎么了担猛?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丢氢。 經(jīng)常有香客問我傅联,道長,這世上最難降的妖魔是什么疚察? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任蒸走,我火速辦了婚禮,結(jié)果婚禮上稍浆,老公的妹妹穿的比我還像新娘载碌。我一直安慰自己猜嘱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布嫁艇。 她就那樣靜靜地躺著朗伶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪步咪。 梳的紋絲不亂的頭發(fā)上论皆,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天,我揣著相機(jī)與錄音猾漫,去河邊找鬼点晴。 笑死,一個胖子當(dāng)著我的面吹牛悯周,可吹牛的內(nèi)容都是我干的粒督。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼禽翼,長吁一口氣:“原來是場噩夢啊……” “哼屠橄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闰挡,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤锐墙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后长酗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪北,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年夺脾,在試婚紗的時候發(fā)現(xiàn)自己被綠了之拨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡劳翰,死狀恐怖敦锌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佳簸,我是刑警寧澤乙墙,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站生均,受9級特大地震影響听想,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜马胧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一汉买、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佩脊,春花似錦蛙粘、人聲如沸垫卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穴肘。三九已至,卻和暖如春舔痕,著一層夾襖步出監(jiān)牢的瞬間评抚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工伯复, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慨代,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓啸如,卻偏偏與公主長得像侍匙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叮雳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評論 2 351

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