衆所周知,java面嚮對象語言中只有單繼承的編程語言,也許你會說,經過實現多個接口這種變通的方式達到多繼承的目的。沒錯,你說的對,不過這並非本片文章要說到的內容,本文要講到的內容是java中實實在在存在的多繼承結構,廢話很少說了,我們進入主題吧。
其實,提及繼承關係,你們的第一印象確定是類的繼承,就java而言,類的繼承的的確確是單繼承的,就這點而言,毋庸置疑,java的語法和編譯器將這一點限制的死死的,假設你試圖讓一個類經過extends關鍵字繼承一個以上的父類,編譯必定經過不過得。java這裏說的多繼承是接口的多繼承,咱們知道類在實現接口時,經過implements關鍵字來使用和實現多個接口。擴展性java的一個重要的特性,若果咱們想對已有的多個接口進行擴展,由於不是實現接口,就不能使用implements關鍵字,那怎麼辦呢,那就只能使用extends關鍵字了。下面看代碼:編程
package com.lib.ThinkInJava.mutilExtends; public interface Lethal { void kill(); } package com.lib.ThinkInJava.mutilExtends; public interface Monster { void destroy(); } package com.lib.ThinkInJava.mutilExtends; public interface Vampire extends Monster, Lethal { void drinkBlood(); }
Vampire接口繼承了Monster,Lethal倆個接口,並且使用了關鍵字extends,在編譯器中也沒有報錯,是否是頗有意思,這就是java中的多繼承。編程語言
注:java中的多繼承僅適用於接口,類沒有多繼承,只有單繼承spa