日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java多态 覆盖_Java ------ 继承、方法覆盖、多态

發(fā)布時(shí)間:2025/3/15 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java多态 覆盖_Java ------ 继承、方法覆盖、多态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是繼承

面向?qū)ο蟮娜筇匦?#xff1a; 封裝、 繼承、多態(tài);

繼承就是子類型將父類型的的屬性繼承到自己類中進(jìn)行使用,通過(guò)繼承的方式子類型可以使用父類型的屬性和方法,并且,繼承只能單重繼承,無(wú)法多繼承,但可以間接繼承;

的概念和作用

繼承其實(shí)不只是單單只有這些作用,其實(shí)它是一種前置條件,只有有了繼承,才有后面的方法覆蓋與多態(tài);

繼承的注意事項(xiàng): 子類無(wú)法繼承父類的私有屬性;

父類型構(gòu)造方法無(wú)法被繼承;

二、什么是方法覆蓋

所謂的方法覆蓋 就是當(dāng)父類型中的方法無(wú)法滿足子類型的時(shí)候,通過(guò)不修改父類型方法,只在子類型中進(jìn)行重寫繼承過(guò)來(lái)的方法,以達(dá)到滿足程序要求;

1 public classTest24 {2 public static voidmain(String[] args) {3

4 Dog d = newDog();5 d.move();6 //output result: 狗在跑步7 //d.move() 的運(yùn)行步驟是 d 引用調(diào)用 Dog 中的重寫過(guò)后的方法

8 }9 }10

11 class Dog extendsDongWu{12

13 public voidmove(){14 System.out.println("狗在跑步");15 }16 //當(dāng)對(duì)父類型的方法進(jìn)行重寫時(shí),其子類型中的重寫方法,其 返回值類型,方法名,形參要全部一致相同,如果有不同的地方,將不構(gòu)成方法的重載

17

18 }19

20 classDongWu{21

22 private voidmove(){23 System.out.println("DongWu 在移動(dòng)!");24 }25 }

View Code

方法覆蓋的注意事項(xiàng): 1、進(jìn)行覆蓋的方法其修飾符級(jí)別不能低于父類型的修飾符級(jí)別;

2、構(gòu)造方法無(wú)法被覆蓋

3、靜態(tài)方法不存在覆蓋

4、覆蓋只針對(duì)方法,不針對(duì)屬性

5、拋出異常只能比父類型少,不能比父類型多

三、什么是多態(tài)

多態(tài)是一種通過(guò)繼承的方式來(lái)達(dá)到程序解耦合的結(jié)構(gòu)方式;

在基本數(shù)據(jù)類型中,有學(xué)到過(guò)數(shù)據(jù)類型轉(zhuǎn)換功能,其實(shí)在類與類之間也有類型轉(zhuǎn)換,當(dāng)然只有兩個(gè)類或多個(gè)類有繼承關(guān)系的情況下,才有類型轉(zhuǎn)換,轉(zhuǎn)換形式有兩種:

—— 子類指向父類: 自動(dòng)類型轉(zhuǎn)換,且稱為向上轉(zhuǎn)型;

—— 父類指向子類: 強(qiáng)制類型轉(zhuǎn)換,且稱為向下轉(zhuǎn)型;

1 public classTest23 {2

3 public static voidmain(String[] args) {4

5 Animal a = new Tiger(); //多態(tài)6 //子類型指向父類型 ,自動(dòng)類型轉(zhuǎn)換,向上轉(zhuǎn)型

7 a.move();8

9 //Tiger i = (Tiger) a; 語(yǔ)法編譯都正常,但是會(huì)出現(xiàn)運(yùn)行異常:父類型有可能指向錯(cuò)誤,解決方案

10

11 if(a instanceofTiger) {12 Tiger i = (Tiger) a; //多態(tài)13 //父類型指向子類型,強(qiáng)制類型轉(zhuǎn)換,向下轉(zhuǎn)型

14 i.move();15 }16 }17 }18

19 classAnimal{20

21 public voidmove() {22

23 }24 }25

26 class Tiger extendsAnimal{27

28 public voidmove() {29 System.out.println("老虎在散步");30 }31 }32

33 class Lion extendsAnimal{34

35 public voidmove() {36 System.out.println("老虎在跑步");37 }38 }

View Code

在該程序中出現(xiàn)了一個(gè)新的關(guān)鍵字 instanceof? ----------------->?它的作用是測(cè)試它左邊的對(duì)象是否指向它右邊的類的實(shí)例,返回boolean類型的數(shù)據(jù);這樣做的好處是判斷兩個(gè)類的指向,避免運(yùn)行異常;

四、為什么使用多態(tài),多態(tài)的作用是什么

前面提到多態(tài)有解耦合的功能,將它運(yùn)用在程序當(dāng)中,可以是程序的耦合度更松散,使程序的可擴(kuò)展性更強(qiáng);

1 public classTest22 {2

3 public static voidmain(String[] args) {4

5 Host zhangsan = newHost();6

7 Dog erHa = newDog();8

9 zhangsan.feed(erHa);10 }11

12 }13

14 classHost{15

16 public voidfeed(Pet pet) {17 pet.eat();18 }19 }20

21 classPet{22

23 public voideat() {24

25 }26 }27

28 class Dog extendsPet{29

30 //方法的繼承與覆蓋31 //方法覆蓋: 修飾符不大于,返回值不變,方法名不變,形參不變

32 public voideat() {33 System.out.println("狗吃骨頭");34 }35 }36

37 class Cat extendsPet{38

39 //方法的繼承與覆蓋

40 public voideat() {41 System.out.println("貓吃魚");42 }43 }

多態(tài)的功能性

多態(tài)的作用就是減少類與類之間的相關(guān)聯(lián),在類與類的繼承過(guò)程中,提供一個(gè)抽象類,并將子類將抽象類作為父類 ,使它成為一個(gè)與原父類的接口, 達(dá)到剝離原父類的目的;在原父類在調(diào)用子類時(shí),可以通過(guò)接口進(jìn)行去調(diào)用,并可以達(dá)到子類與原父類不相關(guān)的目的,提高擴(kuò)展性。

總結(jié)

以上是生活随笔為你收集整理的java多态 覆盖_Java ------ 继承、方法覆盖、多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。