Q 抽象類和接口的語法特性?
抽象類不允許被實(shí)例化, 只能被繼承, 他可以包含屬性(實(shí)例變量)和方法. 方法既可以包含代碼實(shí)現(xiàn)也可以不包含代碼實(shí)現(xiàn). 不包含代碼實(shí)現(xiàn)的方法叫做抽象方法, 子類繼承抽象類, 必須實(shí)現(xiàn)抽象類中的所有抽象方法
接口不能包含屬性(實(shí)例變量) 只能聲明方法, 方法不能包含代碼實(shí)現(xiàn), 類實(shí)現(xiàn)接口時(shí)候必須實(shí)現(xiàn)接口中聲明的所有方法
這個(gè)需要根據(jù)具體的編程語言 做具體的區(qū)分 比如OC 沒有抽象類, 接口方式 使用可選關(guān)鍵字也可以不實(shí)現(xiàn)接口中的方法
Q 抽象類和接口存在的意義?
抽象類是隊(duì)成員變量和方法的抽象, 是一種 is-a的關(guān)系, 是為了解決代碼復(fù)用問題.
接口僅僅是對(duì)方法的抽象,是一種has-a的關(guān)系, 標(biāo)識(shí)具有某一組行為特性,是為了解決解耦問題, 隔離接口和具體的實(shí)現(xiàn),提高代碼的可擴(kuò)展性
Q 抽象類和接口的應(yīng)用場(chǎng)景區(qū)別
什么時(shí)候使用抽象類? 什么時(shí)候使用接口? 實(shí)際上 判斷標(biāo)準(zhǔn)很簡單, 如果要表示一種is-a的關(guān)系,并且是為了解決代碼復(fù)用問題, 我們就用抽象類; 如果是要表示has-a的關(guān)系, 并且為了解決抽象而非代碼復(fù)用問題,那我們就用接口.