Java中抽象類與接口

抽象類特點:

 (1)凡是用abstract 修飾符修飾的類被稱爲抽象類。凡是用abstract修飾符修飾的成員方法被稱爲抽象方法。
 (2)抽象類中可以有零個或多個抽象方法,也可以包含非抽象的方法。
 (3)抽象類中可以沒有抽象方法,但是,有抽象方法的類必須是抽象類。
 (4)對於抽象方法來說,在抽象類中只指定其方法名及其類型,而不書寫其實現代碼。
 (5)抽象類可以派生子類,在抽象類派生的子類中必須實現抽象類中定義的所有抽象方法。
 (6)抽象類不能創建對象,創建對象的工作由抽象類派生的子類來實現。
 (7)如果父類中已有同名的abstract方法,則子類中就不能再有同名的抽象方法。
 (8)abstract不能與final並列修飾同一個類。
 (9)abstract 不能與private、static、final或native並列修飾同一個方法。

接口特點

1, Java接口中的成員變量默認都是public,static,final類型的(都可省略),必須被顯示初始化,即接口中的成員變量爲常量(大寫,單詞之間用"_"分隔)
2, Java接口中的方法默認都是public,abstract類型的(都可省略),沒有方法體,不能被實例化 
3, 接口中沒有構造方法,不能被實例化
4,一個接口不能實現(implements)另一個接口,但它可以繼承多個其它的接口,當類實現了某個Java接口時,它必須實現接口中的所有抽象方法,否則這個類必須聲明爲抽象的
5, 不允許創建接口的實例(實例化),但允許定義接口類型的引用變量,該引用變量引用實現了這個接口的類的實例
  1. public class B implements A{}  
  2.    A a = new B(); //引用變量a被定義爲A接口類型,引用了B實例  
  3.    A a = new A(); //錯誤,接口不允許實例化 
 6,一個類只能繼承一個直接的父類,但可以實現多個接口,間接的實現了多繼承

比較:

1, 抽象類與接口都位於繼承樹的上層
相同點
1, 代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該儘量把引用變量聲明爲繼承樹的上層抽象類型,這樣可以提高兩個系統之間的送耦合
2, 都不能被實例化
3, 都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不提供具體的實現
不同點:
1, 在抽象類中可以爲部分方法提供默認的實現,從而避免在子類中重複實現它們,這是抽象類的優勢,但這一優勢限制了多繼承,而接口中只能包含抽象方法.由於在抽象類中允許加入具體方法,因此擴展抽象類的功能,即向抽象類中添加具體方法,不會對它的子類造成影響,而對於接口,一旦接口被公佈,就必須非常穩定,因爲隨意在接口中添加抽象方法,會影響到所有的實現類,這些實現類要麼實現新增的抽象方法,要麼聲明爲抽象類
2, 一個類只能繼承一個直接的父類,這個父類可能是抽象類,但一個類可以實現多個接口,這是接口的優勢,但這一優勢是以不允許爲任何方法提供實現作爲代價的三, 爲什麼Java語言不允許多重繼承呢?當子類覆蓋父類的實例方法或隱藏父類的成員變量及靜態方法時,Java虛擬機採用不同的綁定規則,假如還允許一個類有多個直接的父類,那麼會使綁定規則更加複雜,
因此,爲了簡化系統結構設計和動態綁定機制,Java語言禁止多重繼承.而接口中只有抽象方法,沒有實例變量和靜態方法,只有接口的實現類纔會實現接口的抽象方法(接口中的抽象方法是通過類來實現的),因此,一個類即使有多個接口,也不會增加Java虛擬機進行動態綁定的複雜度.因爲Java虛擬機永遠不會把方法與接口綁定,而只會把方法與它的實現類綁定.

使用接口和抽象類的總體原則:

1, 用接口作爲系統與外界交互的窗口站在外界使用者(另一個系統)的角度,接口向使用者承諾系統能提供哪些服務,站在系統本身的角度,接口制定系統必須實現哪些服務,接口是系統中最高層次的抽象類型.通過接口交互可以提高兩個系統之間的送耦合系統A通過系統B進行交互,是指系統A訪問系統B時,把引用變量聲明爲系統B中的接口類型,該引用變量引用系統B中接口的實現類的實例。
  1. public interface B  
  2.  {  
  3.  }  
  4.  public class C implements B  
  5.  {  
  6.  }  
  7.  public class A  
  8.  {  
  9.  }  
  10.  B a = new C(); 
2, Java接口本身必須非常穩定,Java接口一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響
3, 用抽象類來定製系統中的擴展點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章