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

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

生活随笔

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

编程问答

匿名内部类探究——它是一个实例

發(fā)布時(shí)間:2025/3/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 匿名内部类探究——它是一个实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

    • 我的學(xué)習(xí)過(guò)程
    • 匿名內(nèi)部類(lèi)概述
    • 匿名內(nèi)部類(lèi)探究
    • 代碼驗(yàn)證(匿名內(nèi)部類(lèi)是一個(gè)實(shí)例)
    • 結(jié)論

我的學(xué)習(xí)過(guò)程

昨天想學(xué)習(xí)一下Java8新特性,看到Lambda表達(dá)式可以替代匿名內(nèi)部類(lèi)。我對(duì)匿名內(nèi)部類(lèi)不太理解,決定學(xué)習(xí)一下。并進(jìn)行了下面的歸納和思考。

匿名內(nèi)部類(lèi)概述

繼承式匿名內(nèi)部類(lèi)聲明格式:

new 類(lèi)名(){};

接口式匿名內(nèi)部類(lèi)聲明格式:

new 接口名(){ //接口中方法要重寫(xiě)(@Override可省略,不需要重寫(xiě)接口的全部方法) ... };

匿名內(nèi)部類(lèi)有什么特點(diǎn)呢?

  • 匿名內(nèi)部類(lèi)沒(méi)有類(lèi)名,它也就不能定義出構(gòu)造器,所以它沒(méi)有自己的構(gòu)造器。
  • 匿名內(nèi)部類(lèi)是隱式地繼承了一個(gè)特定的類(lèi),或者隱式地實(shí)現(xiàn)了一個(gè)特定的接口。
  • 匿名內(nèi)部類(lèi)無(wú)法定義靜態(tài)成員和靜態(tài)方法。
  • 匿名內(nèi)部類(lèi)不能用public,protected,private,static修飾。
  • 匿名內(nèi)部類(lèi)只能創(chuàng)建一個(gè)實(shí)例。
  • 匿名內(nèi)部類(lèi)探究

    匿名內(nèi)部類(lèi)是一個(gè)實(shí)例嗎?
    答:繼承式匿名內(nèi)部類(lèi)是一個(gè)實(shí)例,接口式匿名內(nèi)部類(lèi)不是一個(gè)實(shí)例。有待考證*1
    我的思考:
    隱名內(nèi)部類(lèi)由于沒(méi)有類(lèi)名,就沒(méi)有自己的構(gòu)造器。

    對(duì)于繼承式匿名內(nèi)部類(lèi)來(lái)說(shuō),匿名內(nèi)部類(lèi)是某個(gè)特定類(lèi)的子類(lèi),使用new時(shí)候,相當(dāng)于通過(guò)父類(lèi)構(gòu)造器實(shí)例化了一個(gè)實(shí)例。

    對(duì)于接口式匿名內(nèi)部類(lèi)來(lái)說(shuō),匿名內(nèi)部類(lèi)是實(shí)現(xiàn)了某個(gè)特定的接口,使用new的時(shí)候,相當(dāng)于實(shí)現(xiàn)了特定接口,不是實(shí)例化。
    有待考證*1
    另外想法:接口式匿名內(nèi)部類(lèi)是一個(gè)類(lèi),使用new時(shí),就是相當(dāng)于實(shí)例化了一個(gè)對(duì)象,只是對(duì)象內(nèi)部實(shí)現(xiàn)了特定接口,所以是一個(gè)實(shí)例。傾向于認(rèn)為:接口式匿名內(nèi)部類(lèi)也是一個(gè)實(shí)例。

    進(jìn)一步考證*1
    接口式匿名內(nèi)部類(lèi)是一個(gè)實(shí)例。

    代碼驗(yàn)證(匿名內(nèi)部類(lèi)是一個(gè)實(shí)例)

    代碼文件包含(同一個(gè)包下):類(lèi):Car.java、接口:CarFun.java、main函數(shù)驗(yàn)證:Test.java

    類(lèi):Car.java

    上圖說(shuō)明:這是一個(gè)叫Car的類(lèi),它實(shí)現(xiàn)了CarFun接口,對(duì)接口中的drive()和stop()方法進(jìn)行了重寫(xiě)。

    接口:CarFun.java

    上圖說(shuō)明:這個(gè)是叫CarFun的接口,它有drive()和stop()兩個(gè)方法。

    main函數(shù)驗(yàn)證:Test.java

    ==進(jìn)一步待考證*1:==匿名內(nèi)部類(lèi)可以傳參數(shù)嗎?我這里示例傳了參數(shù)height的值175,所以它還是匿名內(nèi)部類(lèi)嗎?

    進(jìn)一步考證*1
    去掉height參數(shù)。代碼如下:
    通過(guò)第8行的zerocar.getHeight()語(yǔ)句打印,執(zhí)行結(jié)果得到

    Height: 0

    說(shuō)明:不傳參數(shù)時(shí)候,zerocar是一個(gè)實(shí)例對(duì)象,匿名內(nèi)部類(lèi)是一個(gè)實(shí)例。
    思考:所以有參數(shù)情況下還是一個(gè)匿名內(nèi)部類(lèi)嗎?
    暫時(shí)不知道。有待進(jìn)一步考證*2

    這部分在main函數(shù)下寫(xiě)了繼承式匿名內(nèi)部類(lèi)。它是一個(gè)Car的子類(lèi),通過(guò)Car的有參構(gòu)造器實(shí)例化了一個(gè)實(shí)例zerocar。

    //Car的有參構(gòu)造器 public Car(int height, int weight) {this.height = height;}

    且通過(guò)第7行的zerocar.getHeight()語(yǔ)句打印,執(zhí)行結(jié)果得到

    Height: 175

    進(jìn)一步印證了zerocar是個(gè)實(shí)例對(duì)象。

    (續(xù)上一張圖片)

    這部分在main函數(shù)下寫(xiě)了接口式匿名內(nèi)部類(lèi)。我選擇把接口CarFun里的兩個(gè)方法都進(jìn)行了重寫(xiě)(不一定要全部方法重寫(xiě),因?yàn)榇颂幙梢允÷?#64;Override)。并用zerocarfun調(diào)用了drive()和stop()方法。執(zhí)行結(jié)果:

    zero開(kāi)車(chē)了,已經(jīng)開(kāi)了0.2600633412878144千米 zero停車(chē)了

    執(zhí)行成功,說(shuō)明zerocarfun可以調(diào)用方法,說(shuō)明它是一個(gè)對(duì)象。所以接口式匿名內(nèi)部類(lèi)也是一個(gè)實(shí)例。

    同時(shí)驗(yàn)證了:
    繼承式匿名內(nèi)部類(lèi)是通過(guò)父類(lèi)構(gòu)造器實(shí)例化,可以是有參構(gòu)造器,也可以是無(wú)參構(gòu)造器。

    同時(shí)發(fā)現(xiàn):
    繼承式匿名內(nèi)部類(lèi)的花括號(hào)內(nèi)寫(xiě)不了打印語(yǔ)句,因?yàn)槲覍?xiě)的打印語(yǔ)句println報(bào)紅,末尾分號(hào)顏色變灰色。

    【報(bào)錯(cuò)1】:Cannot resolve symbol ‘println’
    【報(bào)錯(cuò)2】:Unnecessary semicolon ‘;’
    Inspection info: Reports on any unnecessary semicolons, whether between class members, inside block statements, or after class definitions. While valid Java, these semicolons are redundant, and may be removed.
    這個(gè)和百度百科中Java內(nèi)部類(lèi)-繼承式匿名內(nèi)部類(lèi)的寫(xiě)法有出入。為什么我這邊不能用打印語(yǔ)句呢?
    百度一下。沒(méi)百度到原因。有說(shuō)缺少main函數(shù)導(dǎo)致。可是我的代碼并不缺少main函數(shù)。難道是繼承式匿名內(nèi)部類(lèi)開(kāi)辟了另外一個(gè)區(qū)域,獨(dú)立于main函數(shù)了嗎?有待考證*2

    結(jié)論

    匿名內(nèi)部類(lèi)它是一個(gè)實(shí)例。

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的匿名内部类探究——它是一个实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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