Java面向對象學習筆記 -- 5(抽象類、接口)


 

1. 抽象類java

    抽象就是將擁有共同方法和屬性的對象提取出來,提取後,從新設計一個更加通用、更加大衆化的類,就叫抽象類。編程

    1)抽象方法:由abstract修飾,只有方法的定義,沒有方法的實現;ide

    2)包含抽象方法的類必須是抽象類;spa

    3)抽象類:由abstract修飾,不能被實例化,能夠包含抽象方法和非抽象方法;設計

    4)抽象類都是須要被繼承的,子類繼承後再實現如下操做:對象

        4.1)子類中重寫父類的抽象方法繼承

        4.2)子類也聲明爲抽象類接口

    5)抽象類的意義:it

        5.1)封裝子類共有的變量和方法--代碼的重用class

        5.2)爲子類提供一種公共的類型--向上造型

        5.3)定義抽象方法,子類重寫它,爲子類提供一個公共的入口


2. 接口

    1)制定一個標準、規範

    2)只要遵照了標準,就能作某件事

    3)由interface定義

            接口中只能包含常量和抽象方法--數據默認爲常量(public static final),

            方法默認爲抽象的(public abstract) 

    4)接口不能被實例化

    5)接口須要被實現的,子類實現接口, 必須重寫接口中的全部抽象方法 

    6)一個類能夠實現多個接口, 又繼承類,又實現接口時,需先繼承再實現 

    7)接口之間能夠繼承(extends)


3. 抽象類和接口的區別

    ① 從語法角度:abstract class方法中能夠有本身的數據成員,也能夠有非abstract的成員方法,並賦予方法的默認行爲,而在interface方式中通常不定義成員數據變量,全部的方法都是abstract,方法不能擁有默認的行爲。

    ② 從編程的角度:abstract class在java語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。而一個類能夠實現多個interface。 

    ③ 從問題域角度:abstract class在Java語言中體現了一種繼承關係,要想使得繼承關係合理,父類和派生類之間必須存在"is a"關係,即父類和派生類在概念本質上應該是相同的。對於interface 來講則否則,並不要求interface的實現者和interface定義在概念本質上是一致的,僅僅是實現了interface定義的契約而已。

    詳細區別:

    1.抽象類能夠有構造方法,接口中不能有構造方法。

    2.抽象類中能夠有普通成員變量,接口中沒有普通成員變量

    3.抽象類中能夠包含非抽象的普通方法,接口中的全部方法必須都是抽象的,不能有非抽象的普通方法。

    4.抽象類中的抽象方法的訪問類型能夠是public,protected,但接口中的抽象方法只能是public類型的,而且默認即爲public abstract類型。

    5.抽象類中能夠包含靜態方法,接口中不能包含靜態方法

    6.抽象類和接口中均可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型能夠任意,但接口中定義的變量只能是public static final類型。

    7. 一個類能夠實現多個接口,但只能繼承一個抽象類。

相關文章
相關標籤/搜索