區(qū)別:
接口(interface)可以說成是抽象類的一種特例择同,接口中的所有方法都必須是抽象的阳准。
接口中的方法定義默認(rèn)為 public abstract 類型,接口中的成員變量類型默認(rèn)為 public static final (這里需要說一點(diǎn),既然一個(gè)變量被final修飾了,那么這個(gè)變量就是一個(gè)常量!!!!!變量必須初始化成常量!!!!!)
語法區(qū)別:
抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。
抽象類中可以有普通成員變量宜岛,接口中沒有普通成員變量。
抽象類中可以包含非抽象的普通方法功舀,接口中的所有方法必須都是抽象的萍倡,不能有非抽象的普通方法。
抽象類中的抽象方法的訪問類型可以是public辟汰,protected列敲,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型帖汞。
抽象類中可以包含靜態(tài)(static)方法戴而,接口中不能包含靜態(tài)(static)方法。
抽象類和接口中都可以包含靜態(tài)成員變量(static)翩蘸,抽象類中的靜態(tài)成員變量的訪問類型可以任意所意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static final類型。
一個(gè)類只能繼承一個(gè)抽象類扁眯,但是可以實(shí)現(xiàn)多個(gè)接口。
一個(gè)接口可以繼承多個(gè)接口翅帜。
抽象類所體現(xiàn)的是一種繼承關(guān)系姻檀,要想使得繼承關(guān)系合理,父類和派生類之間必須存在"is-a"關(guān)系關(guān)系涝滴,即父類和派生類在概念本質(zhì)上應(yīng)該是相同的绣版。對(duì)于接口則不然,并不要求接口的實(shí)現(xiàn)者和接口定義在概念本質(zhì)上是一致的歼疮,僅僅是實(shí)現(xiàn)了接口定義的契約而已杂抽,是"like-a"的關(guān)系。