抽象類:
1、什么是抽象類?
用關鍵字 abstract 修飾的類是抽象類。
也可以說含有抽象方法的類稱為抽象類。
2、什么是抽象方法?
用 abstract 關鍵字修飾,只有聲明,沒有具體實現的方法稱為抽象方法。
3、為什么使用抽象類?
如果一個類沒有足夠的信息去描述一個具體的對象,需要其他的類來補充才能描述一個具體的對象,可以使用抽象類。比如,衣服這個類,我們不能具體說明衣服這個對象是什么樣子,需要我們用褲子、毛衣等子類補充說明才能明確描述它的樣子。
4、抽象類的意義:
抽象類是實現多態的一種機制。對于子類來說,抽象類提供了一個公共的類型,規范了子類的方法,子類又可以有不同的實現。
5、使用注意事項:
a、含有抽象方法的類一定是抽象類,但是抽象類不一定含有抽象方法。不過如果一個類被定義為抽象類而沒有抽象方法的話,這個類的定義是毫無意義的。因為抽象類是為了繼承而存在,無法實例化。如果沒有抽象方法讓子類去實現從而體現各個子類的特點,那么它沒有任何有意義的作用。
b、抽象方法必須由子類重寫,否則子類也要被定義為抽象類。
c、構造方法,類方法(用 static 修飾的方法)不能聲明為抽象方法。
d、抽象類可以有具體的方法,普通的成員變量,靜態成員變量。
接口:
1、什么是接口:
接口是抽象方法的集合。以 interface 聲明。一個類通過繼承接口的方式,從而繼承接口的抽象方法。
2、接口的特點:
a、接口沒有構造方法,不能用于實例化對象
b、接口中的每個方法都是隱式抽象的,默認指定為 public abstract。
c、接口中的每個變量隱式指定為 public static final。
d、接口支持多繼承。
e、當一個類實現接口的時候,要實現接口中所有定義方法。否則這個類要被定義為抽象類。
3、接口的意義:
接口為我們提供了一種規范。所有實現一個接口的類都要實現相同名稱的方法。同時,接口利于我們代碼和功能的擴展。接口也方便我們使用回調機制。
抽象類和接口的區別:
抽象類和接口最相同的地方應該就是它倆都是一種抽象機制,長得比較像。但是本質上來說,抽象類和接口沒有任何關系。它倆不屬于同一種類型。抽象類本質上是類,是對某一類的抽象。接口不是類,只是定義了一種協定。本質上可以看成是對某種行為的抽象。抽象類體現了多態,強調上下繼承關系。父類和子類本質上是相同的,只不過不同的子類有自己單獨的實現形式。而接口不要求和實現接口的類本質上沒有什么關系,只是提供一種協定。