A. java 實現介面和繼承有什麼區別
首先的話,在 Java 中應該說「擴展」(extend)而不是「繼承」(inherit),盡管知道它實現上就是C++那種繼承,但邏輯上是不完全相同的。
再考慮到介面即協議,對介面的擴展,或是說對協議的擴展,實際上就包括了對其公用方法的擴展以及對其定義的擴展兩個方面,其中擴展介面定義實際上即為對協議添加更多的約束,在減少了其可能包含的類的種類的同時也給了這些類更清晰的定義,也就允許用戶基於這更清晰的定義做出更多的操作了。
所以呢,實際類的擴展實際上和繼承是相同的,子類確實繼承了父類的實現,但介面的擴展則只會獲取到父介面的方法聲明,繼承的意味並不明顯,更多的實際上在於對其原協議的擴展,因此應將子介面和父介面間的關系視為擴展而不單單是繼承
其實就是多去思考為什麼在Java這叫擴展不叫繼承,很多問題就迎刃而解了
B. 介面是否可繼承介面(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();
}
(2)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各自繼承某一實現類達到類似的目的。
C. JAVA繼承和介面
舉個例子
首先我有一個介面叫做SaveUserService,裡面有個方法較public void save()然後我又寫了一個JDBCSaveUserImpl實現上述介面,這樣我必然要重寫這個save方法,由於方法名我定義了腳JDBC我必然要在代碼裡面寫上各種連接語句(沒有那麼變態的寫了jdbc不用jdbc編程的)
而我在客戶端一側的所謂試圖層如果要保存用戶信息自然要調用save方法,這個時候我要先聲明一個SaveUserService介面的引用然後給他賦值成JDBCSaveUserImpl的實例,也就是new JDBCSaveUserImpl();(當然正式項目不會這么new,一定會用各種模式比如工廠模式,或者spring的IoC把這個實力注入進來)
調用的時候自然用的是JDBCSaveUserImpl裡面的save方法,但是現在需求變了,要用Hibernate來連資料庫,怎麼辦?自然是寫一個HibernateSaveUserImpl里同樣實現上述的介面,這時候save方法裡面就寫hibernate的內容了,然後在修改spring的配置文件讓Ioc注入新的實現類實例
哇,前台的各層裡面內容一點都不用改,這不就是傳說中的高內聚,松耦合,提高代碼的重用性么?如此happy並且偷懶的方法自然要廣泛弘揚了
這里只舉了一個類的例子,設想下如果是300個功能的大系統,如果你的領導萬一哪天抽風要換實現方式,難道你每個類都改?300個功能可能會調用上千次實例,每個都改必然是死定了,天天加班到12點,但是如果用了spring加介面加多層架構,你只需要改中間某些層然後修改下spring的配置文件就ok了
如果都這么說了還沒明白就繼續學,學到完整做個工程時候就明白了
D. Java中,介面繼承介面時,用implements與extends有什麼區別
介面既可以繼承其他介面但不能實現其他介面。
也就是說你可以這些寫:
public interface secondInterface extends FirstInterface
但是你絕對不能這么寫:
public interface Collection implements Iterable<T>
介面無法實現另外一個借口,只有類才會實現介面。
E. java繼承和介面的區別
1,一個類只能繼承一個類,但是可以實現多個介面。
2,依賴倒轉原則: 依賴抽象(例如介面),不要依賴於實現。
3,合成/聚合復用原則(CARP): 盡量使用合成/聚合,而不是繼承關系達到復用的目的。
4,介面傳達的意思是:擁有某種功能,能幹嘛,比如:Serializable代表可序列化的。
5,繼承傳達的是意思是:is-a,比如:貓 是一個 動物,貓就是動物的子類。
F. java中繼承與實現介面的區別與聯系是什麼啊知道的說一下,我這里謝謝了。
繼承是子類繼承父類的方法,欄位等,只能單繼承,實現介面是實現父類定義好的一些未實現的方法,然後在子類實現,可以多實現
G. java 介面和繼承的區別
有一定的相似性,但從根本上來說是不同的。。。
繼承的意思就是多種類型的事務抽象出的一種共性,繼承了這個父類的子類就可以不再重寫共性的方法、屬性,可以直接使用;
而介面的目的在於定義一個規則,大家來實現這個介面,就是必須滿足這些給點的規則。。。
H. Java中繼承和介面的區別
暈。ls幾位就對介面這么理解啊??
繼承體現父子關系,父親有的兒子也有,代碼重用率高。
而介面往往是反向用的。舉個例子就明白了。
例如我們要建立兩輛車的類,並提供相同的方法。
先建立一個車的介面,提供一個s()方法。
interface car{
public void s();
}
接著建立兩個具體的車的類,實現這個介面:
class benz() implements car{
public void s(){
System.out.println("This is a benz!");
}
}
class ford() implements car{
public void s(){
System.out.println("This is a ford!");
}]}
public class test{ //建立主類
public static void main(String args[]){
//如果沒有介面,我們要生成不同的車就麻煩了,要寫大堆的判斷代碼,這個例子體現不出來。
//我們可以直接利用介面生成車
例如:
car car1=new benz();
car1.s(); /直接用car生成車就成了,不用去判斷到底是什麼車。有個很經典的例子我已經搞忘了。
car car2=new ford();
car2.s();
}
}
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela
I. Java繼承和介面
你好,飛行應該是介面,動物是人和鳥的父類,人是超人的父類,鳥和超人實現飛行的介面
J. java中介面與介面之間是繼承還是實現
介面與介面之間只能是繼承,不能是實現,要實現介面需要定義一個類來實現這個介面,並且這個類必須重寫這個介面的所有方法。而實現介面時,一次則可以實現多個介面。希望可以幫助到你,望採納!