① java中繼承和介面的區別
理論上:類只能單繼承,介面可以多繼承(介面應該叫實現);
實踐上:我們說類的繼承一般繼承的是事物的屬性,如:姓名,年齡,性別 等,而介面的繼承(或者說實現)一般是繼承事物的行為,如:行走,飛翔,游泳(這比較抽象,在一般項目中大部分是指對某事物的增刪改查等操作)
總之,單繼承描述了「is a」的關系,即「子is a父」;
多繼承描述了「can do」的關系,即「子can do父」。
這是我的筆記珍藏,希望對你有啟發。
② java 實現介面和繼承有什麼區別
首先的話,在 Java 中應該說「擴展」(extend)而不是「繼承」(inherit),盡管知道它實現上就是C++那種繼承,但邏輯上是不完全相同的。
再考慮到介面即協議,對介面的擴展,或是說對協議的擴展,實際上就包括了對其公用方法的擴展以及對其定義的擴展兩個方面,其中擴展介面定義實際上即為對協議添加更多的約束,在減少了其可能包含的類的種類的同時也給了這些類更清晰的定義,也就允許用戶基於這更清晰的定義做出更多的操作了。
所以呢,實際類的擴展實際上和繼承是相同的,子類確實繼承了父類的實現,但介面的擴展則只會獲取到父介面的方法聲明,繼承的意味並不明顯,更多的實際上在於對其原協議的擴展,因此應將子介面和父介面間的關系視為擴展而不單單是繼承
其實就是多去思考為什麼在Java這叫擴展不叫繼承,很多問題就迎刃而解了
③ java介面可以繼承多個介面嗎
一個介面可以繼承多抄個介面.
interface C extends A, B {}是可以的.
一個類可以實現多個介面:
class D implements A,B,C{}
但是一個類只能繼承一個類,不能繼承多個類
class B extends A{}
在繼承類的同時,也可以繼承介面:
class E extends D implements A,B,C{}
這也正是選擇用介面而不是抽象類的原因
④ java中一個介面可以繼承幾個介面嗎
可以,介面是常量值和方法定義的集合,是一種特殊的抽象類,可以繼承多個介面。例如:Interface3 Extends Interface0, Interface1, interface……。
java介面解析如下:
在Java中,定義一個介面的形式如下:
[public] interface InterfaceName {
}
介面中可以含有變數和方法。但是要注意,介面中的變數會被隱式地指定為public static final變數,而方法會被隱式地指定為public abstract方法且只能是public abstract方法,並且介面中所有的方法不能有具體的實現、
也就是說,介面中的方法必須都是抽象方法。
要讓一個類遵循某組特地的介面需要使用implements關鍵字,具體格式如下:
class ClassName implements Interface1,Interface2,[....]{
}
可以看出,允許一個類遵循多個特定的介面。如果一個非抽象類遵循了某個介面,就必須實現該介面中的所有方法。對於遵循某個介面的抽象類,可以不實現該介面中的抽象方法。
(4)java介面繼承介面擴展閱讀:
java繼承介面的特性:
1)一個類如果實現了一個借口,則要實現該介面的所有方法。
2)方法的名字、返回類型、參數必須與介面中完全一致。如果方法的返回類型不是void,則方法體必須至少有一條return語句。
3)因為介面的方法默認是public類型的,所以在實現的時候一定要用public來修飾(否則默認為protected類型,縮小了方法的使用范圍)。
⑤ 介面是否可繼承介面(java)
Java語法中,介面可以繼承介面,抽象類可以實現介面,抽象類可以繼承實體類。
Java語法中,使用interface定義一個介面,使用class定義一個類,使用關鍵字abstract + class定義一個抽象類。以下分別對這3個知識點進行解析:
1、介面可以繼承介面
介面可以多繼承介面,例如:Interface1 Extends Interface2, Interface3, Interface4……
代碼示例為:
public interface Interface1 {
public void method1();
}
public interface Interface2 extends Interface1 {
public void method2();
}
public interface Interface3 extends Interface1, Interface2 {
public void method3();
}
(5)java介面繼承介面擴展閱讀:
1、Java繼承或實現介面時需要遵循的原則:
(1)類優先於介面。 如果一個子類繼承的父類和介面有相同的方法實現。 那麼子類繼承父類的方法。
(2)子類型中的方法優先於父類型中的方法。
(3)如果以上條件都不滿足, 則必須顯示覆蓋/實現其方法,或者聲明成abstract。
2、Java實現多繼承的方式:
(1)Java中一個類不能繼承多個具體class。
(2)一個類只可繼承自一個具體 class,但可實現多個介面。 interface不涉及到實現細節,不與任何存儲空間有關連。新類可繼承自一個具象class,其餘繼承都得是interfaces。
(3)outer class不可繼承自多個具體class,可在其內部設多個inner class,每個inner class都能各自繼承某一實現類。inner class不受限於outer class是否已經繼承自某一實現類。
(4)inner class可以說是多重繼承問題的完整解決方案。一個類不能繼承自多個一般類。但我們可以讓其內部的多個inner class各自繼承某一實現類達到類似的目的。