《java與模式》 5 抽象類

2021-08-09 18:34:31 字數 638 閱讀 9044

抽象類同時又抽象方法和具體方法;

抽象類是用來繼承的,在乙個以繼承關係形成的等級結構裡,樹葉節點應當是具體類,樹枝節點應當是抽象類(或介面),只要有可能不要從具體類繼承;

**重構的建議,若a類繼承b類,應當新建抽象類c或介面c,讓ab成為c的子類。–這是黎克特制代換原則;

抽象類應當擁有盡可能多的共同**,乙個典型例子就是策略模式,在策略模式中抽象策略角色的分量越重越好;盡可能將公共方法移動到抽象策略角色中;

擁有盡可能少的資料,

針對抽象程式設計,就是依賴倒轉原則;

正確使用繼承,盡量使用介面(抽象類)繼承,盡量不用類對類的繼承

抽象類就是模板方法模式的應用;

繼承代表「一般化/特殊化」關係,基類代表一般,衍生類代表特殊,衍生類將基類特殊化擴充套件化。

使用繼承的條件

1. 子類是超類的乙個特殊種類,而不是超類的乙個角色。就是「has-a」(應當使用聚合關係)和「is-a」(才符合繼承關係)的關係;

2. 永遠不會出現需要將子類換成另乙個類的子類的情況。

3. 子類具有擴充套件超類的責任,而不是具有置換掉或登出掉超類的責任,如果子類需要大量的置換掉超類的行為,那麼這個子類不應當成為這個超類的子類。

4. 只有在分類學角度上有意義時,才可以使用繼承,不要從工具類繼承;

Java抽象類與抽象方法

一 定義乙個抽象類animal public abstract class animal這個類裡面現在什麼都沒有。那麼它裡面可以有什麼?我們試著給它加上成員變數,成員方法等,看看行不行。public abstract class animal int quality public void eat ...

Java 抽象類與抽象方法

抽象方法 在類中沒有方法體的方法,就是抽象方法。抽象類 含有抽象方法的類就叫抽象類。抽象類中的抽象方法必須被實現!如果乙個子類沒有實現父類中的抽象方法,則子類也成為了乙個抽象類!抽象類中的普通方法,可以不必實現。1用abstract關鍵字來修飾乙個類時,這個類叫做抽象類 用abstract來修飾乙個...

Java(抽象類與抽象方法)

關鍵字abstract修飾的類稱為抽象類,抽象類是一種沒有完全實現的類,不能用它例項化任何物件,它的主要用途是描述一些概念性的內容,然後在子類中具體的實現這些概念,這樣可以提高開發效率,統一使用者介面,所以抽象類更多的是作為其他類的父類。抽象類中可以含有抽象方法,抽象方法是用abstract修飾的方...