九.介面和抽象類

2020-08-12 12:23:20

1.抽象類

  • 什麼是抽象類?
    如果一個類表達的是一種抽象的概念,僅僅作爲其他派生類的一個父類別,主要定義功能,具體的四線交給他的子類來做
  • 語法:
    在class前面加上abstract就是一個抽象類
  • 抽象類的特點:
    (1)抽象方法所在的類必須是抽象類
    抽象方法:在返回值前面加上abstract就是一個抽象方法
    抽象方法特點:只有方法的定義,沒有方法體
    (2)抽象類不能範例化
    (3)如果要實現一個抽象類,建立一個子類去繼承這個抽象類
    (4)子類繼承抽象類之後,必須重寫抽象類裏面所有的抽象方法(前提子類不是抽象類)
    (5)抽象類裏面可以定義普通方法
    (6)抽象類裏面可以定義構造方法

2.介面

  • 介面就是一種公用的規範標準,只要符合規範標準,大家都可以通用

  • 什麼是介面?
    (1)就是多個類之間的公共規範
    (2)介面就是一個特殊的抽象類,介面裏面的方法都是抽象方法
    (3)介面解決了java單繼承的問題
    -怎麼定義一個介面?
    public interface 介面名{
    }

  • 介面的特點:
    (1)介面裏面的屬性都是常數,預設會給你加上「public static final」修飾
    (2)介面裏面的方法都是抽象方法,預設會給你加上「public abstract」進行修飾
    (3)介面不能夠範例化
    (4)抽象類是繼承,介面是用來實現的
    (5)一個類實現一個介面,必須實現這個介面裏面所有的抽象方法(前提這個類不是抽象類)
    (6)一個類可以實現多個介面,中間使用逗號隔開
    (7)介面裏面不能定義普通方法
    (8)介面沒有構造方法
    (9)介面也可以繼承介面,並且可以繼承多個介面

  • 實現類
    (1)實現介面的類叫做實現類 class A implements B
    (2)如果一個類繼承了一個父類同時需要實現一個介面,繼承一定是在實現介面前面
    class E extends D implements C

  • 介面和抽象類的相同點和不同點:
    相同點:
    ①介面和抽象類都不能被範例化,只能被其他類實現和繼承
    ②介面和抽象類都可以包含抽象方法,實現介面和抽象類的類都必須實現這些抽象方法,否則實現的類就是抽象類
    不同點:
    ①抽象類與介面定義不同:抽象類abstract class,介面interface
    ②介面裏只能包含抽象方法,不包含已經實現的方法;抽象類則完全可以包含普通的方法
    ③介面裏不能定義靜態方法;抽象類可以定義靜態方法
    ④介面裏只能定義靜態常數屬性,不能定義普通屬性;抽象類裡既可以定義普通屬性,也可以定義靜態常數
    ⑤介面不包含建構函式;抽象類可以包含建構函式,抽象類裡的建構函式並不是用於建立物件,而是讓其子類呼叫這些建構函式來完成屬於抽象類的初始化操作
    ⑥介面不包含初始化塊,但抽象類可以包含初始化塊
    ⑦一個類最多隻能有一個直接父類別,包括抽象類;但一個類可以直接實現多個介面,通過實現多個介面可以彌補Java的單繼承不足

  • 物件導向總結:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述