鍍金池/ 教程/ Java/ Java抽象類和接口的區(qū)別
Java for循環(huán)
Java接口
Java是什么?
Java命名約定
java中方法重載和方法重寫的區(qū)別
Java運算符
Java抽象類
Java快速入門
Java實例初始化程序塊
Java靜態(tài)綁定和動態(tài)綁定
Java do-while循環(huán)
Java對象克隆
Java Object類
Java聚合
Java繼承
Java this關(guān)鍵字
Java虛擬機(jī)內(nèi)部體系結(jié)構(gòu)
Java構(gòu)造器(構(gòu)造方法)
Eclipse安裝和配置
Java多態(tài)
Java方法重載
Java while循環(huán)
Java教程
Java按值調(diào)用和引用調(diào)用
Java strictfp關(guān)鍵字
Java封裝
Java語言特點
Java數(shù)組
Java instanceof運算符
Java包裝類
Java命令行參數(shù)
Java包
Java面向?qū)ο螅∣OP)概念
簡單Java程序
Java基礎(chǔ)實例程序
Java對象和類
Java continue語句
Java抽象類和接口的區(qū)別
C++ VS Java比較
Java if/else語句
Java switch語句
Java歷史
Java變量和數(shù)據(jù)類型
安裝Java環(huán)境(Linux)
Java JDK安裝和配置
Hello Java程序的內(nèi)部細(xì)節(jié)
Java break語句
Java方法重寫
Java Unicode編碼系統(tǒng)
怎么樣開始學(xué)習(xí)Java編程?
對象和類之間的區(qū)別
Java訪問修飾符
Java super關(guān)鍵字
Java注釋
JDK,JRE和JVM之間的區(qū)別
Java final關(guān)鍵字
Java static關(guān)鍵字

Java抽象類和接口的區(qū)別

抽象類和接口都用于實現(xiàn)抽象,可以聲明抽象方法。 抽象類和接口都不能被實例化。但是在下面給出的抽象類和接口之間有許多區(qū)別。

抽象類 接口
抽象類可以有抽象和非抽象方法。 接口只能有抽象方法。 從Java 8開始,它也可以有默認(rèn)和靜態(tài)方法。
抽象類不支持多重繼承。 接口支持多繼承。
抽象類可以有final,非final,靜態(tài)和非靜態(tài)變量。 接口只有靜態(tài)和final變量。
抽象類可以提供接口的實現(xiàn)。 接口不能提供抽象類的實現(xiàn)。
abstract關(guān)鍵字用來聲明抽象類。 interface關(guān)鍵字用于聲明接口。

簡單地說,抽象類實現(xiàn)了部分抽象(0到100%),而接口實現(xiàn)了完全抽象(100%)。

Java抽象類和接口的示例

讓我們來看看下面一個簡單的例子,使用接口和抽象類。

//Creating interface that has 4 methods  
interface A {
    void a();// bydefault, public and abstract

    void b();

    void c();

    void d();
}

// Creating abstract class that provides the implementation of one method of A
// interface
abstract class B implements A {
    public void c() {
        System.out.println("I am C");
    }
}

// Creating subclass of abstract class, now we need to provide the
// implementation of rest of the methods
class M extends B {
    public void a() {
        System.out.println("I am a");
    }

    public void b() {
        System.out.println("I am b");
    }

    public void d() {
        System.out.println("I am d");
    }
}

// Creating a test class that calls the methods of A interface
class Test5 {
    public static void main(String args[]) {
        A a = new M();
        a.a();
        a.b();
        a.c();
        a.d();
    }
}

執(zhí)行上面的示例代碼,得到以下結(jié)果 -

I am a
I am b
I am c
I am d