一、抽象類和常規類很像,可是不能使用new操做符建立它的實例。一個包含抽象方法的類必須聲明爲抽象類。抽象類的構造方法定義爲protected,由於它只被子類使用。建立一個具體子類的實例時,它的父類的構造方法被調用以初始化父類中定義的數據域。spa
二、若是抽象父類的子類不能實現全部的抽象方法,那麼子類也必須定義爲抽象的。也就是說,在抽象類擴展的非抽象子類中,必須實現全部的抽象方法。還要注意到,抽象方法是非靜態的。code
三、包含抽象對象的類必須是抽象的。可是能夠定義一個不包含抽象方法的抽象類。即便子類的父類是具體的,這個子類也能夠是抽象的。對象
四、Java只容許爲類的擴展作單一繼承,可是容許使用接口作多重擴展。例如,blog
public class NewClass extends BaseClass implements Interface1,...,InterfaceN{ ... }
接口能夠擴展其餘接口而不是類。一個類能夠擴展它的父類同時實現多個接口。繼承
五、若是一個類實現了一個接口,那麼這個接口就相似於該類的一個父類。能夠將接口看成一種數據類型使用,將接口類型的變量轉換爲它的子類。接口
六、抽象類和接口都是用來明確多個對象的共同特徵的。那麼該如何肯定在什麼狀況下使用接口什麼狀況下使用類呢?通常來講,詳細描述父子關係的is-a關係應該用類建模。若is-a關係也成類屬關係,它代表對象擁有某種屬性。弱is-a關係能夠用接口來建模。class