接口和抽象類的區(qū)別
比較抽象類接口
默認(rèn)方法抽象類可以有默認(rèn)的方法實(shí)現(xiàn),java 8之前,接口中不存在方法的實(shí)現(xiàn).
實(shí)現(xiàn)方式子類使用extends關(guān)鍵字來繼承抽象類.如果子類不是抽象類,子類需要提供抽象類中所聲明方法的實(shí)現(xiàn).子類使用implements來實(shí)現(xiàn)接口,需要提供接口中所有聲明的實(shí)現(xiàn).
構(gòu)造器抽象類中可以有構(gòu)造器,接口中不能
和正常類區(qū)別抽象類不能被實(shí)例化接口則是完全不同的類型
訪問修飾符抽象方法可以有public,protected和default等修飾接口默認(rèn)是public,不能使用其他修飾符
多繼承一個(gè)子類只能存在一個(gè)父類一個(gè)子類可以存在多個(gè)接口
添加新方法想抽象類中添加新方法,可以提供默認(rèn)的實(shí)現(xiàn),因此可以不修改子類現(xiàn)有的代碼如果往接口中添加新方法,則子類中需要實(shí)現(xiàn)該方法.