【Java面試】接口和抽象類有什么區(qū)別?-創(chuàng)新互聯(lián)

從設(shè)計(jì)目的上來說,二者有如下的區(qū)別:

創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為大余等服務(wù)建站,大余等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為大余企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

接口體現(xiàn)的是一種規(guī)范。對(duì)于接口的實(shí)現(xiàn)者而言,接口規(guī)定了實(shí)現(xiàn)者必須向外提供哪些服務(wù);對(duì)于接口的調(diào)用者而言,接口規(guī)定了調(diào)用者可以調(diào)用哪些服務(wù),以及如何調(diào)用這些服務(wù)。當(dāng)在一個(gè)程序中使用接口時(shí),接口是多個(gè)模塊間的耦合標(biāo)準(zhǔn);當(dāng)在多個(gè)應(yīng)用程序之間使用接口時(shí),接口是多個(gè)程序之間的通信標(biāo)準(zhǔn)。
接口體現(xiàn)的是一種規(guī)范和實(shí)現(xiàn)分離的設(shè)計(jì)哲學(xué),充分利用接口可以極好地降低程序各模塊之間的耦合,從而提高系統(tǒng)的可擴(kuò)展性和可維護(hù)性。基于這種原則,很多軟件架構(gòu)設(shè)計(jì)理論都倡導(dǎo)“面向接口”編程,而不是面向?qū)崿F(xiàn)類編程,希望通過面向接口編程來降低程序的耦合。(面向接口編程)

抽象類體現(xiàn)的是一種模板式設(shè)計(jì)。抽象類作為多個(gè)子類的抽象父類,可以被當(dāng)成系統(tǒng)實(shí)現(xiàn)過程中的中間產(chǎn)品,這個(gè)中間產(chǎn)品已經(jīng)實(shí)現(xiàn)了系統(tǒng)的部分功能,但這個(gè)產(chǎn)品依然不能當(dāng)成最終產(chǎn)品,必須有更進(jìn)一步的完善,這種完善可能有幾種不同方式。

從使用方式上來說,二者有如下的區(qū)別:

  • 接口里只能包含抽象方法、靜態(tài)方法、默認(rèn)方法,不能為普通方法提供方法實(shí)現(xiàn);抽象類則完全可以包含普通方法。

  • 接口里只能定義靜態(tài)常量,不能定義普通成員變量;抽象類里則既可以定義普通成員變量,也可以定義靜態(tài)常量。

  • 接口里不包含構(gòu)造器;抽象類里可以包含構(gòu)造器,抽象類里的構(gòu)造器并不是用于創(chuàng)建對(duì)象,而是讓其子類調(diào)用這些構(gòu)造器來完成屬于抽象類的初始化操作。

  • 接口里不能包含初始化塊;但抽象類則完全可以包含初始化塊。

  • 一個(gè)類最多只能有一個(gè)直接父類,包括抽象類;但一個(gè)類可以直接實(shí)現(xiàn)多個(gè)接口,通過實(shí)現(xiàn)多個(gè)接口可以彌補(bǔ)Java單繼承的不足。

  • 接口和抽象類都不能被實(shí)例化,它們都位于繼承樹的頂端,用于被其他類實(shí)現(xiàn)和繼承。

  • 接口和抽象類都可以包含抽象方法,實(shí)現(xiàn)接口或繼承抽象類的普通子類都必須實(shí)現(xiàn)這些抽象方法。

下面是接口的實(shí)例代碼:

public interface Test1 {void test0(); //默認(rèn)被修飾為public abstract
    public static void test1(){//允許使用static修飾,但是必須加上代碼塊

    };
    public default void test2(){//可以使用default修飾,但是必須加上代碼塊
        
    }
    private void test3(); //接口中不允許私有方法;
    protected void test4(); //接口中不允許保護(hù)方法;
    int a=10; //接口中聲明的成員變量默認(rèn)被public static final
}
class Test2 implements Test1{public static void main(String[] args) {System.out.println(Test1.a); //可以直接訪問接口的成員變量 說明是static修飾的
        Test1.a=20; //編譯出錯(cuò) 說明默認(rèn)被final修飾
    }

    @Override
    public void test0() {
    }
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞標(biāo)題:【Java面試】接口和抽象類有什么區(qū)別?-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://bm7419.com/article8/cdgsop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、Google、企業(yè)建站響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)