013_面向對象_抽象類和接口
1.抽象類(abstract)
(1)特點
①方法只有聲明沒有實現時,該方法就是抽象方法,抽象方法必須定義到抽象類中,該類也必須被abstract修飾
②抽象類不可以被實例化,因為調用抽象方法沒有意義。
③抽象類必須有子類覆蓋所有的抽象方法,該子類才可以實例化,否則,這個子類還是抽象類
(2)常見問題
①抽象類中有構造函數嗎?
有,用來給子類對象初始化
②抽象類可以不定義抽象方法嗎?
可以。目的是不讓該類創建對象,通常這個類中的方法有方法體,卻沒有內容
③抽象關鍵字不可以和哪些關鍵字共存?
private,static,final
④抽象類和一般類的異同
相同:都是用來描述事物的,都在內部定義了成員
異同:a.一般類中有足夠的信息描述事物,抽象類描述事物的信息可能不足
b.一般類中不能定義抽象方法抽象類可以定義抽象方法,同時也可以定義非抽象方法
c.一般類可以被實例化,抽象類不可以被實例化
2.接口(interface)
接口,在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法(http://www.runoob.com/java/java-interfaces.html)
(1)固定的修飾符
①全局常量:public static final
②抽象方法:public abstract
(2)特點
①一個類可以實現多個接口,而且在繼承另一個類的同時,還可以實現多個接口。
②接口的出現避免了單繼承的局限性,接口與接口之間是繼承關系,而且接口可以多繼承。
(3)抽象類和接口的異同
①相同點:
都是不斷向上抽取而來的
②不同點:
a.抽象類需要繼承,而且只能單繼承
接口需要被實現,而且可以多實現
b.抽象類中可以定義抽象方法和非抽象方法,子類繼承後,可以直接使用非抽象方法
接口中只能定義抽象方法,必須由子類去實現
c.抽象類的繼承,是 is 關系,在定義該體系的基本共性內容。
接口的實現是 like 關系,在定義體系額外功能。
(4)接口的應用:
接口類型的引用,用於接受(指向)接口的子類對象。
013_面向對象_抽象類和接口