含有abstract 修飾符的class即為抽象類商佛,abstract類不能創(chuàng)建的實例對象。含有
abstract方法的類必須定義為abstract class银还,abstract class類中的方法不必是抽
象類努隙。abstract class 類中定義抽象類必須在具體(Concrete)子類中實現(xiàn),所以
不能有抽象構(gòu)造方法或抽象靜態(tài)方法哀九。如果他的子類沒有實現(xiàn)抽象父類中的所有
抽象方法剿配,那么子類也必須定義為abstract類型。
接口(interface)可以說成是抽象類的一種特例阅束,接口中的所有方法都必須是抽象
的呼胚。接口中的方法定義默認(rèn)為public abstract類型,接口中的成員變量類型默認(rèn)為public
static final息裸。
下面比較一下兩者的語法區(qū)別:
1.抽象類可以有構(gòu)造方法砸讳,接口中不能有構(gòu)造方法。
2.抽象類中可以有普通成員變量界牡,接口中沒有普通成員變量
3.抽象類中可以包含非抽象的普通方法簿寂,接口中的所有方法必須都是抽象的,不能有
非抽象的普通方法宿亡。
4.抽象類中的抽象方法的訪問類型可以是public protected和默認(rèn)類型常遂,但是接口中的
抽象方法只能是public類型的,并且默認(rèn)為即為public abstract類型挽荠。
5.抽象類中可以包含靜態(tài)方法克胳,接口中不能包含靜態(tài)方法
6.抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可
以任意圈匆,但接口中定義的變量只能是public static final類型漠另,并且默認(rèn)即為public static
final類型。
7.一個類可以實現(xiàn)多個接口跃赚,但只能繼承一個抽象類笆搓。
下面說一下兩者在應(yīng)用上的區(qū)別:
接口更多的是在系統(tǒng)架構(gòu)設(shè)計方法發(fā)揮作用性湿,主要用于定義模塊之間的通信契約。
而抽象類在代碼實現(xiàn)方面發(fā)揮作用满败,可以實現(xiàn)代碼的重用肤频。