Java中的抽象類與接口

抽象類
java

抽象類是由abstract修飾的類,而且必定包含有用abstract修飾的方法,也就是抽象方法,當一個類中有抽象方法的時候,這個類必定要被定義成抽象類。spa

抽象類中也能夠沒有抽象方法。設計

抽象類除了有抽象方法,其它的與普通的類沒什麼區別。orm

當抽象類做爲父類被子類繼承時,子類必須實現抽象類父類中的抽象方法,若是沒實現的話,則必須將子類也定義爲抽象類,父類不爲抽象類時,子類也能夠爲抽象類。對象

抽象類不能用new操做符來初始化,可是能夠定義它的構造方法
繼承


接口
接口

接口是一種與類類似的結構,只包含常量和抽象方法,即接口中出現的數據是常量,默認爲public static final定義的,方法默認爲abstract,能夠不寫。ip

一個接口能夠擴展一個或多個接口。字符串

一個類只能繼承一個類,可是能實現多個接口,從而實現多繼承。it

接口也不能用new操做符來初始化。


區別


變量 構造方法 方法
抽象類 無限制 子類經過構造方法鏈調用構造方法,抽象類不能用new操做符實例化 無限制
接口

全部的變量必須

是public static final的

沒有構造方法,接口不能用new操做符實例化 全部的方法必須是公共的抽象實例方法


設計指南

抽象類和接口都是用來明確多個對象的共同特徵的。通常來講,詳細描述父子關係的強是關係(strong is-a relationship)應該用類建模。例如,由於公曆是一種日曆,因此,類java.util.GregorianCalendar和java.util.Calendar是用類繼承建模的。弱是關係(weak is-a relationship)也稱爲類屬關係(is-kind-of relationship),它代表對象擁有某種屬性。弱是關係能夠用接口來建模。例如,全部的字符串都是可比較的,所以,String類實現Comparable接口。

相關文章
相關標籤/搜索