1. 介面可以看成是一種特殊化的抽象類。
2. 抽象類和介面都是抽象的類,都是不可例項化的。
3. 抽象類的子類和介面的實現類,都必須實現類體裡宣告的抽象方法。
1. 分開來講——
1) 抽象類:
a. 使用abstract class定義。
b. 可以只宣告方法(此時應該有abstract修飾),也可以實現自己的方法,並且修飾符沒有限制。
c. 變數的定義不受限制。
2) 介面:
a. 使用inte***ce定義。
b. 只能宣告方法,不能有實現,同時方法修飾符只能為public。
c. 變數需宣告為public static final,並且必須初始化。(一般不用)
2. 合起來說——
a. 乙個類只能繼承乙個抽象類,但它卻可以實現乙個或者多個介面。
b. 抽象類表明了乙個類是什麼,是所屬關係;而介面則擴充套件了乙個類,強調了它能並且應該幹什麼。
可以這麼描述類、抽象類、介面的聯絡——
正常來講,boy和girl都繼承自human,表明它們都是人。在這裡,human就是乙個抽象類,它定義了作為human所必需的屬性(field),像身高height,體重weight,性別***,等等。因此,作為human的子類,boy和girl都必須有這些屬性。
同時,human實現了自己的方法method,即它的子類在正常情況下都可以這樣進行乙個動作,像眨眼blink,不管boy還是girl,一般天生都是睫毛一抖眼皮一閉,好了,就完成眨眼這個動作了。當然了,對於這些method,boy和girl是可以改變的。就像笑smile,天生都是嘴巴一咧,便笑出來了。但是在後期,笑可能有各自的變化,就像boy可能變成了陰險一笑,girl變成了抿嘴一笑。這個時候,boy和girl的smile都重寫了human的smile。
當然了,boy和girl各自會有一些自己獨有的屬性和方法,這些屬性、方法並不是作為乙個human就會有的。比如boy的某些特徵,girl每個月都會有的某些行為,嗯大家都懂的。
然而有些行為,作為human都應該並且必須會做,但是human並沒有給出具體內容,而應該由子類自己實現,這就是抽象方法abstract method。如,作為human,boy和girl都應該是會走路walk(當然了,前提是正常來講),但是human並沒有告訴它們應該怎麼去做,而是要自己後天去學習實現的。而這樣,也就導致它們可能有不同的實現方式,就像boy的walk有可能是左腳先邁出去,而girl的walk是右腳先邁出去。
boy和girl都長大了,該上學了,這個時候student應該值得考慮,因為學生能擴充套件它們的能力。在這裡,student就是乙個介面,它要求了作為乙個student應有的權利(好吧,受教育權)和義務,而這些義務,就是上學study、做作業work,考試examine,嗯,還有打掃教室clean,等等。我宣告了,告訴你了這些都是你的義務,你必須實現完成的,至於怎麼具體實現就看你自己的了。就像考試,可以靠自己的努力去做好完成;也可以看看書,借鑑借鑑;也可以,那啥,妹子啊,你字寫得不錯啊,借我看看。
Java基礎 抽象類和介面的區別
a 宣告方法的存在而不實現它的類叫做抽象類 介面是抽象類的變體,是純抽象類 b 抽象類由關鍵字abstract來宣告 介面由inte ce宣告 c 繼承抽象類要使用extends 實現介面要使用implements d 抽象類可以有構造器,介面中不能有 e 抽象類可以有普通成員變數 介面中的變數預設...
Java基礎 抽象類和介面的區別
當子類中有一些共有的但是細節不同的行為的時候,可以對這些行為進行抽取,將這些行為抽取到父類中以抽象方法的形式展現。抽象方法所在的類一定是抽象類 抽象類不能例項化 建立物件 但是有構造方法 抽象類中可以有抽象方法也可以沒有抽象方法 抽象方法可以過載 抽象方法不可以用static final修飾 抽象方...
java抽象類與介面的區別抽象類與介面的特性是什麼
介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...