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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

继承 抽象 接口 多态

發(fā)布時(shí)間:2025/3/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 继承 抽象 接口 多态 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.?繼承

  概述

    繼承就是子類(lèi)繼承父類(lèi)的屬性和行為,子類(lèi)可以直接訪問(wèn)父類(lèi)的非私有方法

    Java語(yǔ)言是單繼承 多級(jí)繼承 一個(gè)父類(lèi)可以有多個(gè)子類(lèi)

    提高了代碼的復(fù)用性,類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系,是多態(tài)的前提

  繼承中方法的覆蓋重寫(xiě)(聲明不變,重新實(shí)現(xiàn))

    父子類(lèi)之間方法,參數(shù)列表相同

    子類(lèi)方法權(quán)限大于等于父類(lèi)

    子類(lèi)方法的返回值范圍小于等于父類(lèi)方法的返回值

    大部分情況下,方法子父類(lèi)方法聲明是完全一樣的

  繼承中構(gòu)造方法的訪問(wèn)

    構(gòu)造方法名與類(lèi)名一致,所以子類(lèi)無(wú)法繼承父類(lèi)構(gòu)造

    構(gòu)造方法用于初始化成員變量,子類(lèi)的初始化過(guò)程中,須先執(zhí)行父類(lèi)的初始化動(dòng)作

    父類(lèi)成員變量初始化后,才可以給子類(lèi)使用

    所以子類(lèi)構(gòu)造必須調(diào)用父類(lèi)構(gòu)造,不寫(xiě)則默認(rèn)贈(zèng)送super( ); 寫(xiě)了則不贈(zèng)送

    子類(lèi)構(gòu)造可以通過(guò)super關(guān)鍵字調(diào)用父類(lèi)重載構(gòu)造

    子類(lèi)構(gòu)造中,super構(gòu)造調(diào)用只能有一個(gè)且必須是第一個(gè)

    只有子類(lèi)構(gòu)造才能調(diào)用父類(lèi)構(gòu)造,子類(lèi)成員方法不能調(diào)用父類(lèi)構(gòu)造

  繼承中成員變量,成員方法的訪問(wèn)

    與多態(tài)完全一樣

    成員變量:編譯看左,運(yùn)行看左

    成員方法:編譯看左,運(yùn)行看右

  super在繼承中的用法 ?

    代表父類(lèi)的存儲(chǔ)空間標(biāo)識(shí)(可以理解為父親的引用)

    子類(lèi)成員方法中訪問(wèn)父類(lèi)的成員變量,方法

    子類(lèi)構(gòu)造訪問(wèn)父類(lèi)構(gòu)造 super( );

  this在繼承中的用法

    代表當(dāng)前對(duì)象的引用(誰(shuí)調(diào)用就代表誰(shuí))

    本類(lèi)成員方法中訪問(wèn)本類(lèi)成員變量,成員方法

    本類(lèi)構(gòu)造訪問(wèn)本類(lèi)另一構(gòu)造

    this調(diào)用也必須是構(gòu)造方法的第一個(gè)語(yǔ)句

      this和super兩個(gè)構(gòu)造調(diào)用不可同時(shí)使用

      this( ); 沒(méi)有 .

  繼承圖解

    創(chuàng)建子類(lèi)對(duì)象時(shí),先初始化父類(lèi)空間,再創(chuàng)建其子類(lèi)對(duì)象本身

    先把父類(lèi)構(gòu)造執(zhí)行完,再在這個(gè)父類(lèi)內(nèi)容的外圍寫(xiě)上子類(lèi)內(nèi)容

2.?抽象

  概述

    子類(lèi)們重寫(xiě)父類(lèi)方法,而子類(lèi)各自的實(shí)現(xiàn)都不盡相同

    則父類(lèi)方法聲明和方法主體,聲明有意義,而方法主體沒(méi)有意義

    沒(méi)有方法主體的方法稱(chēng)為抽象方法,用abstract修飾

    包含抽象方法的類(lèi)就是抽象類(lèi),用abstract修飾

  注意

    繼承抽象類(lèi)的子類(lèi)須重寫(xiě)父類(lèi)所有抽象方法,否則該子類(lèi)也必須聲明為抽象類(lèi)

    抽象類(lèi)不能創(chuàng)建對(duì)象,只能創(chuàng)建非抽象子類(lèi)的對(duì)象

    抽象類(lèi)有構(gòu)造方法,供子類(lèi)創(chuàng)建對(duì)象時(shí),初始化父類(lèi)空間使用

    不一定包含抽象方法,但是有抽象方法的類(lèi)必定是抽象類(lèi)

3.?接口

  概述

    接口是Java語(yǔ)言中一種引用類(lèi)型,是方法的集合

    接口的作用是制定規(guī)則,實(shí)現(xiàn)擴(kuò)展

    如果說(shuō)類(lèi)的內(nèi)部封裝了成員變量,構(gòu)造方法和成員方法,那么接口的內(nèi)部主要就是封裝了方法

    接口定義用interface,也會(huì)被編譯成.class文件,但要明確它不是類(lèi),而是引用數(shù)據(jù)類(lèi)型

    接口不能創(chuàng)建對(duì)象,但可以被實(shí)現(xiàn)(implements,類(lèi)似繼承),接口實(shí)現(xiàn)類(lèi)需實(shí)現(xiàn)接口所有方法

    類(lèi)是單繼承的,接口是可以多實(shí)現(xiàn)的(一個(gè)類(lèi)實(shí)現(xiàn)多個(gè)接口)

    Java7抽象方法 ?/ ?Java8默認(rèn)方法,靜態(tài)方法 ?/ ?Java9私有方法(靜態(tài)/默認(rèn))

  接口中的常量

    (public static final) 數(shù)據(jù)類(lèi)型 變量名 = 值;

    接口常量必須賦值,否則無(wú)法通過(guò)編譯

    命名規(guī)則:全大寫(xiě) _連接 (NUM_OF_PEOPLE)

    通過(guò) 接口名.常量名 直接訪問(wèn)

    接口中的抽象方法:固定修飾符?public ?abstract?可省略

  接口中的默認(rèn)方法

    解決接口升級(jí)問(wèn)題

    如果接口如添加新的抽象方法,則所有實(shí)現(xiàn)類(lèi)都須實(shí)現(xiàn)此抽象方法

    若直接在接口中添加默認(rèn)方法,則實(shí)現(xiàn)類(lèi)代碼不用更改

    可以直接通過(guò)接口名稱(chēng).默認(rèn)方法名稱(chēng)來(lái)調(diào)用接口的默認(rèn)方法

    defaul關(guān)鍵字不能省略(因?yàn)榻涌谥械姆椒J(rèn)是public的)

    接口默認(rèn)方法可被繼承,也可重寫(xiě),但只能通過(guò)實(shí)現(xiàn)類(lèi)對(duì)象調(diào)用

  接口中的靜態(tài)方法

    靜態(tài)與.class文件相關(guān)

    一個(gè)類(lèi)可實(shí)現(xiàn)多個(gè)接口,它們的靜態(tài)方法可能沖突

    所以應(yīng)通過(guò) 接口名稱(chēng).方法名( ) 調(diào)用靜態(tài)方法,不能通過(guò)實(shí)現(xiàn)類(lèi)對(duì)象調(diào)用

  接口中的私有方法

    解決接口中多個(gè)默認(rèn)方法和靜態(tài)方法之間的代碼重復(fù)問(wèn)題

    多個(gè)默認(rèn)方法之間有重復(fù)的代碼,用一個(gè)共有方法將其抽取出來(lái)

    但這個(gè)共有方法不能讓實(shí)現(xiàn)類(lèi)訪問(wèn)到,應(yīng)該是私有化的,這就是私有方法

    普通私有方法:多個(gè)默認(rèn)方法代碼重復(fù)(修飾符只有private,加default報(bào)錯(cuò),因?yàn)闄?quán)限沖突)

    靜態(tài)私有方法:多個(gè)靜態(tài)方法代碼重復(fù)(private和static順序無(wú)所謂)

  注意事項(xiàng)

    1.接口沒(méi)有靜態(tài)代碼塊或者構(gòu)造方法

    2.實(shí)現(xiàn)類(lèi)所實(shí)現(xiàn)的多個(gè)接口存在重復(fù)的抽象方法,只需覆蓋重寫(xiě)一次即可

    3.實(shí)現(xiàn)類(lèi)所實(shí)現(xiàn)的多個(gè)接口存在重復(fù)的默認(rèn)方法,則實(shí)現(xiàn)類(lèi)必須對(duì)沖突的默認(rèn)方法進(jìn)行覆蓋重寫(xiě)

    4.父類(lèi)和接口的默認(rèn)方法沖突,優(yōu)先用父類(lèi)的方法

    5.接口之間的多繼承,多個(gè)父接口中的抽象方法重復(fù),沒(méi)關(guān)系

    6.多個(gè)父接口中的默認(rèn)方法重復(fù),子接口必須覆蓋重寫(xiě)此默認(rèn)方法,且?guī)е鴇efault

4.?多態(tài)

  概述

    指同一行為,在不同對(duì)象身上的多種表現(xiàn)形式

    面向?qū)ο笕筇卣?: 封裝 繼承 多態(tài)

    多態(tài)的前提:1.繼承/實(shí)現(xiàn) 2.方法的重寫(xiě) 3.父類(lèi)引用指向子類(lèi)對(duì)象

    格式:父類(lèi)名稱(chēng) 對(duì)象名 = ?new ?子類(lèi)名稱(chēng)( );

  多態(tài)的意義

    無(wú)論右邊new的是哪個(gè)子類(lèi)對(duì)象,左邊都不變,代碼統(tǒng)一

    實(shí)現(xiàn)父類(lèi)的引用動(dòng)態(tài)的調(diào)用子類(lèi)的功能

    有良好的擴(kuò)展性

    弊端是無(wú)法使用子類(lèi)的特有內(nèi)容

  多態(tài)成員變量,成員方法的訪問(wèn)

    與繼承完全一樣

    成員變量:編譯看左,運(yùn)行看左

    成員方法:編譯看左,運(yùn)行看右

  向上轉(zhuǎn)型

    其實(shí)就是多態(tài)寫(xiě)法

    格式:父類(lèi)名稱(chēng) 對(duì)象名 = ?new 子類(lèi)名稱(chēng)( );

    含義:創(chuàng)建一個(gè)子類(lèi)對(duì)象,把它當(dāng)作父類(lèi)來(lái)看待使用

    向上轉(zhuǎn)型一定是安全的,從小范圍轉(zhuǎn)向了大范圍

    對(duì)象一旦向上轉(zhuǎn)型為父類(lèi),則無(wú)法調(diào)用子類(lèi)特有方法

    類(lèi)似于基本類(lèi)型的自動(dòng)類(lèi)型轉(zhuǎn)換

  向下轉(zhuǎn)型

    作用:解決多態(tài)的弊端 (無(wú)法使用子類(lèi)的特有內(nèi)容)

    格式:子類(lèi)名稱(chēng) 對(duì)象名 = (子類(lèi)名稱(chēng)) 父類(lèi)對(duì)象;

    含義:將父類(lèi)對(duì)象,還原成本來(lái)的子類(lèi)對(duì)象

    向下轉(zhuǎn)型須原路返回,否則編譯通過(guò),但運(yùn)行報(bào)錯(cuò)

    類(lèi)似于基本類(lèi)型的強(qiáng)制類(lèi)型轉(zhuǎn)換

    向下轉(zhuǎn)型之前用instanceof 判斷一下

  Instanceof 方法

    對(duì)象名 instanceof 類(lèi)名/數(shù)據(jù)類(lèi)型 :返回一個(gè)boolean

轉(zhuǎn)載于:https://www.cnblogs.com/bushishucai/p/9631691.html

總結(jié)

以上是生活随笔為你收集整理的继承 抽象 接口 多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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