你真的懂抽象類和接口之間的差異嗎胜嗓?


今天下午看書看到一道關(guān)于抽象類和接口的題目高职,雖然之前看《Java編程思想》的時候感覺自己都弄明白了,但是時隔幾個月感覺有些陌生了辞州。不要緊怔锌,趁這個機會復習復習吧。

幾個問題

接口是否可以繼承接口变过?

可以埃元。

抽象類是否可以實現(xiàn)接口?抽象類是否可以繼承具體類媚狰?抽象類是否能擁有static聲明的靜態(tài)方法亚情?

都可以。抽象類歸根結(jié)底還是一個類啊哈雏,對于抽象類楞件,我們只需記住它和普通類的唯一區(qū)別:不能創(chuàng)建抽象類的實例對象、允許有abstract聲明的方法裳瘪。為什么不能創(chuàng)建實例對象呢土浸?因為其中的抽象方法是沒有方法體的,不知道它究竟有多少私有變量彭羹,要占多大的空間黄伊,所以無法為它分配內(nèi)存。對于后兩個問題派殷,直接點还最,show you the code:


image
image
image

抽象類可以有構(gòu)造函數(shù)嗎?

顯然可以毡惜。從上面的圖中就可以看出拓轻。而且從上面的圖中我們還可以看出抽象方法還可以定義自己的私有成員變量。

抽象方法可以聲明為private和static嗎经伙?

不能扶叉。IDE會提示private(static)和abstract不能放在一起。這個很容易理解帕膜,聲明為private的之后子類無法繼承到它枣氧,自然無法“實現(xiàn)”這個方法了;而static表示可通過類名來調(diào)用的函數(shù)垮刹,而抽象方法是沒有方法體的达吞,調(diào)用它還什么都不能做。所以它們在語法上是被禁止的荒典。

image

接口可以有構(gòu)造函數(shù)嗎酪劫?

不可以吞鸭。因為它都不是一個“類”,當然不能創(chuàng)建實例對象契耿,所以當然不能有構(gòu)造函數(shù)。值得注意的是螃征,接口可以有成員變量搪桂,而且只能是public static的,你用其他關(guān)鍵字來約束會報錯“Modifier 'protected'(或者'private') not allowed here”盯滚,而且可以不用顯式的指定這兩個關(guān)鍵字踢械,編譯器默認認定它就是“public static”。

接口可以有靜態(tài)方法嗎魄藕?

可以内列。這是在jdk1.8中新引入的特性。這有點違反了抽象的意義背率。

抽象類可以無抽象方法嗎话瞧?

問題提得越來越怪異了!但是這個問題的回答是“可以”寝姿。最明顯的例子就是空類交排,即只有類的聲明,里面什么東西都沒有饵筑。有時為了不讓某個類被實例化埃篓,故意把沒有抽象方法的類用abstract聲明為抽象類。

沒有抽象方法的抽象類可以被實例化嗎根资?

答案是:不能架专。不行的話咱試一下就知道了。原因我想應(yīng)該是“一票否決制”玄帕,就是說編譯器只要“看”到你new的類的前面有abstract關(guān)鍵字修飾時部脚,就認定有語法錯誤,而不去檢查你到底有沒有抽象方法裤纹,當然這只是我猜想的睛低,不知道對不對(有知道的同學請求留言告知,謝謝_)服傍。

image
image

子類必須實現(xiàn)抽象父類的所有抽象方法嗎钱雷?

視情況而定,如果子類也是抽象類吹零,則不必實現(xiàn)父類的所有抽象方法罩抗,否則,必須實現(xiàn)父類的所有抽象方法灿椅。

抽象類和接口里可以有內(nèi)部類嗎套蒂?

都可以钞支。這個參考了CSDN博客:Java牛角尖【002】:類可以被static修飾嗎?,雖然原文主要不是想闡述我這個問題操刀,但是博主的舉的例子還是可以參考的烁挟,我直接把代碼搬運過來吧。

抽象類中:

public abstract class StaticClassDemo {  
  
    public static void main(String[] args) {  
        StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();  
        ic.showMessage("Hello, world");  
    }  
  
    public abstract void showMessage(String msg);  
      
    static class InnerClass extends StaticClassDemo{  
        public void showMessage(String msg){  
            System.out.println(msg);  
        }  
    }  
}  

接口中:

public interface StaticClassDemo {  
  
    public void showMessage(String msg);  
      
    static class InnerClass implements StaticClassDemo{  
        public void showMessage(String msg){  
            System.out.println(msg);  
        }  
          
        public static void main(String args[]){  
            StaticClassDemo.InnerClass ic = new StaticClassDemo.InnerClass();  
            ic.showMessage("Hello, world");  
        }  
    }  
}  

總結(jié)

總的說來骨坑,內(nèi)部類還算是一個“類”撼嗓,所以它擁有與“類”相似的性質(zhì),而接口不是“類”欢唾,自然是沒有構(gòu)造函數(shù)的且警,但是可以有自己的成員變量,供實現(xiàn)它的各類使用礁遣。

自認為還是菜鳥斑芜,如有說錯的地方,請多指教祟霍。更多文章杏头,歡迎移步我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沸呐,隨后出現(xiàn)的幾起案子大州,更是在濱河造成了極大的恐慌,老刑警劉巖垂谢,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦画,死亡現(xiàn)場離奇詭異,居然都是意外死亡滥朱,警方通過查閱死者的電腦和手機根暑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徙邻,“玉大人排嫌,你說我怎么就攤上這事$掷纾” “怎么了淳地?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帅容。 經(jīng)常有香客問我颇象,道長,這世上最難降的妖魔是什么并徘? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任遣钳,我火速辦了婚禮,結(jié)果婚禮上麦乞,老公的妹妹穿的比我還像新娘蕴茴。我一直安慰自己劝评,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布倦淀。 她就那樣靜靜地躺著蒋畜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撞叽。 梳的紋絲不亂的頭發(fā)上姻成,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音能扒,去河邊找鬼佣渴。 笑死辫狼,一個胖子當著我的面吹牛初斑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膨处,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼见秤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了真椿?” 一聲冷哼從身側(cè)響起鹃答,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎突硝,沒想到半個月后测摔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡解恰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年锋八,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护盈。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡挟纱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腐宋,到底是詐尸還是另有隱情紊服,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布胸竞,位于F島的核電站欺嗤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卫枝。R本人自食惡果不足惜剂府,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剃盾。 院中可真熱鬧腺占,春花似錦淤袜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至意鲸,卻和暖如春烦周,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怎顾。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工读慎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人槐雾。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓夭委,卻偏偏與公主長得像,于是被迫代替她去往敵國和親募强。 傳聞我的和親對象是個殘疾皇子株灸,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法擎值,內(nèi)部類的語法慌烧,繼承相關(guān)的語法,異常的語法鸠儿,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理屹蚊,服務(wù)發(fā)現(xiàn),斷路器进每,智...
    卡卡羅2017閱讀 134,711評論 18 139
  • (一)Java部分 1汹粤、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,116評論 0 62
  • 第三天 張朕寧站排頭帶頭作用非常好,喊口號非常賣力品追,也一直能夠能夠謙讓有禮貌玄括,對待戰(zhàn)友也越來越和善。能夠及時主動幫...
    Tank教官閱讀 377評論 2 4
  • 樹葉,不是一天黃的;人心堡僻,不是一天涼的糠惫。誰都不傻,總是敷衍钉疫,都會漸行漸遠硼讽;誰也不笨,沒被看重牲阁,都要越來越淡固阁。 傷什...
    君莫笑吾閱讀 621評論 0 1