欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    大家好idea快速定位到錯(cuò)誤,我是小刀,今天和大家討論一下接口實(shí)現(xiàn)的兩個(gè)問(wèn)題,眾所周知,接口是設(shè)計(jì)模式的基石,所以了解接口的一些實(shí)現(xiàn)對(duì)理解設(shè)計(jì)模式,源碼都大有裨益!

    接口圈真亂

    之所以會(huì)提出如標(biāo)題中的問(wèn)題, 是因?yàn)樵诳磿r(shí),發(fā)現(xiàn)接口實(shí)現(xiàn)好像有點(diǎn)混亂

    如上圖所示,其實(shí)是有兩個(gè)問(wèn)題

    實(shí)現(xiàn)了List接口, 然后又實(shí)現(xiàn)了List接口. 這樣有問(wèn)題嗎?

    idea快速定位到錯(cuò)誤行_idea快速定位到錯(cuò)誤_idea 定位文件位置

    接口中有個(gè)size()方法,List接口中也有一個(gè)size()方法. 如果有某個(gè)類同時(shí)實(shí)現(xiàn)和List接口, 會(huì)不會(huì)報(bào)錯(cuò)?

    實(shí)踐出真知

    首先,我們能正常使用說(shuō)明上面兩個(gè)問(wèn)題應(yīng)該是不成問(wèn)題的.對(duì)于問(wèn)題1. 大家糾結(jié)的點(diǎn)應(yīng)該是在于, 對(duì)于接口A, 如果抽象類B實(shí)現(xiàn)了接口,那么子類C在實(shí)現(xiàn)接口時(shí),還要不要重寫方法

    接口Greet

    /** * @author lixiang * @date 2020/6/16 **/public interface Greet {    /**     * 加油的接口定義     */     void cheer();}

    idea快速定位到錯(cuò)誤_idea快速定位到錯(cuò)誤行_idea 定位文件位置

    抽象實(shí)現(xiàn)類

    /** * @author lixiang * @date 2020/6/18 **/public abstract class AbstractGreet implements Greet {    }

    這里我們看到抽象類實(shí)現(xiàn)接口,要不要去重寫方法都不會(huì)報(bào)錯(cuò)但是通用來(lái)說(shuō), 抽象類的作用就是,要有一個(gè)通用的實(shí)現(xiàn),所以一般來(lái)說(shuō),還是實(shí)現(xiàn)方法比較好, 然后再拋一個(gè)抽象的具體實(shí)現(xiàn), 如下所示:

    /** * @author lixiang * @date 2020/6/18 **/public abstract class AbstractGreet implements Greet {    /**     * 加油的接口定義     */    @Override    public void cheer() {        System.out.println("這里通常會(huì)做一些通用的處理,比如資源初始化,賦初值之類的");        doCheer();    }    /**     * 留給子類去實(shí)現(xiàn)     */    public abstract void doCheer();}

    真正的子類

    idea 定位文件位置_idea快速定位到錯(cuò)誤_idea快速定位到錯(cuò)誤行

    /** * @author lixiang * @date 2020/6/17 **/public class TrueGreet extends AbstractGreet implements Greet {    /**     * 留給子類去實(shí)現(xiàn)     */    @Override    public void doCheer() {        System.out.println("加油加油");    }}

    在這里可以看到,雖然我們也實(shí)現(xiàn)了Greet接口,但是因?yàn)橐呀?jīng)實(shí)現(xiàn)過(guò)了接口,所以這里就不用再實(shí)現(xiàn)接口的cheer方法, 只需要實(shí)現(xiàn)抽象類的()方法就可以了,當(dāng)然也可以實(shí)現(xiàn)

    @Override    public void cheer() {        super.cheer();        System.out.println("子類自己的實(shí)現(xiàn)");    }

    這樣加上自己的實(shí)現(xiàn)也是沒(méi)有問(wèn)題的,所以說(shuō), 像開頭實(shí)現(xiàn)了List接口后,是不用再實(shí)現(xiàn)List的接口的, 實(shí)現(xiàn)了不重寫其中的方法,編譯也不會(huì)報(bào)錯(cuò), 只能說(shuō)是讓結(jié)構(gòu)更清晰一些.

    這里還有一個(gè)比較有趣的現(xiàn)象,就是在idea中, 要重寫方法時(shí), 提示的是覆寫抽象類的,而不是接口的,如下圖所示:

    idea快速定位到錯(cuò)誤行_idea 定位文件位置_idea快速定位到錯(cuò)誤

    報(bào)錯(cuò)的場(chǎng)景

    上面都是正確的idea快速定位到錯(cuò)誤,其實(shí)有一種報(bào)錯(cuò)的場(chǎng)景要注意, 就是當(dāng)兩個(gè)不同的接口定義的方法簽名不一致的時(shí)候(方法名,入?yún)⒁粯?返回值不一樣)的時(shí)候,對(duì)于實(shí)現(xiàn)類,就找不到該重寫哪個(gè)了,就會(huì)報(bào)錯(cuò),如下所示

    接口

    /** * @author lixiang * @date 2020/6/17 **/public interface GreetCopy {    /**     * 加油的接口定義     */    String cheer();}

    idea快速定位到錯(cuò)誤行_idea 定位文件位置_idea快速定位到錯(cuò)誤

    和最開始我們定義的Greet接口不一樣的是, 返回值從void改成了,

    如上圖所示, 這樣編譯都是通不過(guò)的, 但是如果簽名換成一樣的,就不成問(wèn)題了.

    總結(jié)

    其實(shí)在寫本文之前,小刀也是對(duì)這些實(shí)現(xiàn)關(guān)系不是很清楚, 這樣邊實(shí)踐邊寫下來(lái)就清晰多了.希望大家也能多實(shí)踐,也如我一直說(shuō)的,學(xué)編程其實(shí)就是多實(shí)踐,多思考. 大家一起加油!

    原創(chuàng)不易,點(diǎn)個(gè)在看支持一下唄~

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有