導航:首頁 > 研究方法 > 為什麼實現類實現不了介面方法

為什麼實現類實現不了介面方法

發布時間:2022-05-19 17:12:51

㈠ 介面的實現類必須實現介面的所有方法嗎

是的,介面實現類必須實現介面的所有方法,如果要實現部分的話,可以用抽象類

㈡ Java:為什麼抽象類實現介面可以不實現其中的所有方法

抽象類實現介面可以不實現其中的所有方法:其實介面就是一個抽象類的另一種體現形式。
如果一個抽象類實現了抽象介面,那麼本身這個抽象類就是抽象的,意味著就算實現了,子類再extends抽象類的話就沒必要實現了。
舉個例子:
小明、小花,他們是好朋友,他們各自有秘密,如果小明把秘密告訴了小花,那麼小花也不一定必須把小花的秘密告訴小明吧。
PS:抽象類本身是沒用的,提供給子類來使用,如果抽象類實現介面然後重寫抽象類方法,豈不是失去了抽象的概念!

㈢ Java中 一個類實現了某介面 則必須實現該介面中的所有方法么

不一定,關鍵要看子類是否是抽象類。
如果子類是非抽象類,則必須實現介面中的所有方法;
如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在!
1、抽象類定義
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。抽象類是不完整的,它只能用作基類。在面向對象方法中,抽象類主要用來進行類型隱藏和充當全局變數的角色。
2、抽象類特點
1)抽象類不能實例化。
2)抽象類可以包含抽象方法和抽象訪問器。
3)不能用 sealed 修飾符修飾抽象類,因為這兩個修飾符的含義是相反的。 採用 sealed 修飾符的類無法繼承,而 abstract 修飾符要求對類進行繼承。
4)從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。
3、與具體類的比較

1)抽象類不能直接實例化,並且對抽象類使用 new 運算符會導致編譯時錯誤。雖然一些變數和值在編譯時的類型可以是抽象的,但是這樣的變數和值必須或者為 null,或者含有對非抽象類的實例的引用(此非抽象類是從抽象類派生的)。
2)允許(但不要求)抽象類包含抽象成員。
3)抽象類不能被密封。
4、與介面的比較
1)相同點

a、不能實例化;
b、包含未實現的方法聲明;
c、派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員)
2)不同點

a、類可以實現無限個介面,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現介面,從而得出介面是用來解決多重繼承問題的。
b、抽象類當中可以存在非抽象的方法,可介面不能,且它裡面的方法只是一個聲明必須用public來修飾沒有具體實現的方法。
c、抽象類中的成員變數可以被不同的修飾符來修飾,可介面中的成員變數默認的都是靜態常量(static final)。
d、抽象類是對象的抽象,然而介面是一種行為規范。

㈣ 1、反射是通過介面類,調用實現類,為何不直接調用介面類,來實現方法。我想了解這一做的意思

這是一個應用場景的問題,如果你的項目非常小不必這樣寫.
很多時候要運行的時候 才知道需要運行什麼方法.
加入有一個非常龐大的系統,上千個類,上萬個介面.
如果你呢么寫我要寫多少調用代碼啊.
如果用反射的話,我只需要把我要調用的類名,方法名傳給調用類就行了,這樣的話只需要一個調用類.

㈤ java抽象類為什麼不用實現介面實現的方法

應該是從設計角度考慮的,和內存應該沒什麼關系,JAVA編程思想里提到過如非必要應該首選類而不是介面

抽象類,使部分抽象,它是可以帶有一些有方法體的方法,而且可以含有私有成員
介面,的所有方法都是抽象的,public的
而且抽象類在實現時可以不必實現所有方法(這樣的子類仍然為抽象類),而介面實現時必須實現所有方法。。。你這個例子里使用介面或是抽象類應該沒有太大的區別,我的理解就是這樣了。。

㈥ 抽象類實現一個介面為什麼可以不用都實現介面中的方法

1)抽象類本身就存在抽象方法,抽象方法不需要實現;
2)介面中的方法都是抽象的,實際修飾符是public abstract,我們平時都省略了
所以抽象類不需要實現介面中的方法,但是抽象類的子類(抽象類除外) 就要同時實現抽象類以及介面中的所有抽象方法!

㈦ C#中像這種類裡面為什麼繼承的介面,但類裡面卻沒有實現介面方法但是卻不會報錯,求大神解答

這是顯式實現,你可以了解一下顯式實現的語法。
你第一張圖的 public 方法實現的介面都屬於隱式實現。
你強制轉換成 IServiceProvider 就能調用這個 GetService 方法了。

㈧ 為什麼使用介面不用實現類

面向對象是解決軟體需求的變化而產生的,他的目的就是讓需求變化時軟體的改動達到最小化。如果只是一個IA介面,一個AClass類,IA介面就是多餘的,你直接用實現類就可以了。

如果又來了一個BClass,也需要toString()方法。
用實現類可能忘了在BClass中定義toString()方法,但讓BClass實現IA介面,就必須在BClass中實現toString()方法,不然編譯不通過,這是介面的第一個好處:強制實現。

如果要把IA ia = new AClass();換成new BClass();
用實現類需要修改兩行,AClass a = new AClass();換成BClass b = new BClass();,a.toString(); 換成b.toString();
用介面只需要修改一行,IA ia = new AClass();換成IA ia = new BClass();
而IA.toString();是不需要修改的,這是介面的第二個好處:抽象行為。

㈨ java介面中的方法用default修飾有什麼特性,為什麼實現類不自動生成介面中的方法,

在Java8之前,介面中的實現方法必須是abstract的,實現該介面的類必須重寫該方法,介面只負責聲明該方法。
Java8給介面增加了default關鍵詞,用default修飾的方法可以有實現內容,實現該介面的類可以不重寫用default修飾的方法,類似於繼承。但這樣也會帶來新的問題。
Java中只能繼承一個類,但是可以實現多個介面,當多個介面中有同一個方法時,以前是沒問題的,因為實現類必須重寫方法。但現在,當多個介面中有同一個用default修飾的方法時,就無法判斷到底實現的是哪個介面的方法。這種情況下,就必須重寫方法。
還有一種情況,一個類繼承的父類和實現的介面中都有同一個方法,而這個類又沒有重寫時,實現的是父類的方法,而不是介面中的方法。

閱讀全文

與為什麼實現類實現不了介面方法相關的資料

熱點內容
動物基因檢測的方法 瀏覽:766
消消樂837關怎麼過方法 瀏覽:393
泰國去黑頭水使用方法 瀏覽:742
基礎試驗檢測方法 瀏覽:944
分析化學中數理統計方法 瀏覽:498
安卓手機自動切換wifi設置方法 瀏覽:320
腿部拉伸方法簡單 瀏覽:468
快速急剎車的正確方法 瀏覽:249
銅板與銅板連接方法 瀏覽:122
絲瓜種植方法的圖片 瀏覽:340
超市各種率的計算方法 瀏覽:722
小米手機亮度設置方法 瀏覽:331
魔方快速恢復原樣方法 瀏覽:528
上油泵安裝接頭安裝方法 瀏覽:874
用彩泥捏凳子的簡便方法 瀏覽:354
教具使用情況研究方法 瀏覽:595
手機淘寶猜你喜歡推廣方法介紹 瀏覽:995
胡夫金字塔用作比較的方法怎麼寫 瀏覽:22
蘇州牛皮癬中葯治療方法 瀏覽:714
正確的供奉方法圖片 瀏覽:394