實現介面,則在類中一定要實現介面中的所有方法對嗎

2021-03-04 06:24:04 字數 6668 閱讀 6304

1樓:老子有點悲劇

如果子類是非抽象類,則必須實現介面中的所有方法;

如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在!

1、抽象類定義

抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。通常在程式設計語句中用 abstract 修飾的類是抽象類。在c++中,含有純虛擬函式的類稱為抽象類,它不能生成物件;在java中,含有抽象方法的類稱為抽象類,同樣不能生成物件。

抽象類是不完整的,它只能用作基類。在物件導向方法中,抽象類主要用來進行型別隱藏和充當全域性變數的角色。

2、抽象類特點

1)抽象類不能例項化。

2)抽象類可以包含抽象方法和抽象訪問器。

3)不能用 sealed 修飾符修飾抽象類,因為這兩個修飾符的含義是相反的。 採用 sealed 修飾符的類無法繼承,而 abstract 修飾符要求對類進行繼承。

4)從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實際實現。

3、與具體類的比較

1)抽象類不能直接例項化,並且對抽象類使用 new 運算子會導致編譯時錯誤。雖然一些變數和值在編譯時的型別可以是抽象的,但是這樣的變數和值必須或者為 null,或者含有對非抽象類的例項的引用(此非抽象類是從抽象類派生的)。

2)允許(但不要求)抽象類包含抽象成員。

3)抽象類不能被密封。

4、與介面的比較

1)相同點

a、不能例項化;

b、包含未實現的方法宣告;

c、派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員)

java中,一個類實現某個介面,必須重寫介面中的所有方法嗎???

2樓:青鳥中關村專家

不一定,關鍵要看子類是否是抽象類。

如果子類是非抽象類,則必須實現介面中的所有方法;

如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在!

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、抽象類是物件的抽象,然而介面是一種行為規範。

3樓:匿名使用者

樓主,先宣告一點,javax.swing基本是過時的,屬於前臺的工作,現在前臺基本都是定製的,java程式設計只要關注後臺就可以,不過你問的介面問題倒是很重要的,給你解釋以下,java中類和介面的設計完全體現了java語言的一些設計思想,比如物件導向,繼承、多型等

1 介面的設計解決了java只能單繼承的缺點,可以實現多個介面來實現java的多繼承

2 實現某個介面必須覆寫其中的所有方法,當然也可以是一個空的實現(方法體為空沒有任何作用)

3 樓主也許會問了空實現有什麼用呢,這就是java的特殊設計,通常的是介面在最上面,下面會有一個這個介面的實現類,有時候這個實現類也是一個空的實現,沒有任何方作用!!!程式設計人員只需要實現那個空的方法,覆寫其中自己需要方法的就可以了~~

為什麼要這樣做呢?原因就是介面是一個抽象的概念,與具體的底層、實現都無關,打個比方,現在的網路程式設計都是與http協議相關的,如果將來有新的協議出現就只要實現這個介面就可以了,完全不用做任何修改就可以把新的協議容納進來

總結一下,介面就是一個物體的抽象,規定了這個物體所有的行為方法,與具體的實現無關,這正體現了抽象的概念~~

4樓:極品飛刀進化版

抽象類可以不用

普通類必須

5樓:匿名使用者

哈哈,這是api文件的問題,你沒看過java原始碼,原始碼中實現的方法比這多,只是api沒寫全。要學會看原始碼!!!!

6樓:深圳海楓科技****

是的,需要全部實現

介面的特點:

1、用 inte***ce 來定義。

2、介面中的所有成員變數都預設是由public static final修飾的。

3、介面中的所有方法都預設是由public abstract修飾的。介面沒有構造方法。

4、實現介面的類中必須提供介面中所有方法的具體實現內容。

5、多個無關的類可以實現同一個介面

6、一個類可以實現多個無關的介面

7、與繼承關係類似,介面與實現類之間存在多型性8、介面也可以繼承另一個介面,使用extends關鍵字。

9、下圖是我們的教案中的擷取

java裡實現一個介面的類必須要實現介面裡的所有方法嗎

7樓:

一、實現介面或繼承抽象類的非抽象子類必須實現介面的所有方法或抽象類的所有抽象方法。

介面中的所有方法均為抽象方法,抽象類中包含非抽象方法和抽象方法。如果一個非抽象子類實現了介面,那麼該子類必須實現父介面的所有方法。如果一個非抽象子類繼承了抽象類,那麼該子類必須實現抽象類的所有抽象方法。

二、實現方案

(一)實現介面

1. 定義介面

/*** 介面:表示人類行為

*/inte***ce behavor

2. 定義子類,實現介面

/*** 子類:表示人類,實現「行為」介面*/class person implements behavor//實現介面的抽象方法

@override

public void eat()

//實現介面的抽象方法

@override

public void sleep()

}3. 定義呼叫類,呼叫方法

public class main

}(二)繼承抽象類

1. 定義抽象類

/*** 抽象類:表示人類

*/abstract class person/*** 抽象方法:吃飯

*/public abstract void eat();

/*** 抽象方法:睡覺

*/public abstract void sleep();

}2. 定義子類,繼承抽象類

/*** 子類:學生類

*/class student extends person//實現抽象類的抽象方法

@override

public void eat()

//實現抽象類的抽象方法

@override

public void sleep()

}3. 定義呼叫類,呼叫方法

public class main}

8樓:sunny鞦韆墜

如果是抽象類要實現介面,可以實現部分或者一個都不實現就行,要是具體類就必須實現所有的方法

9樓:匿名使用者

實現介面或繼承抽象類的子類必須實現介面的所有方法或抽象類的所有抽象方法。

實現方案:

10樓:wzz頓悟

a)若一個普通類實現了介面,那麼,該普通類必須實現介面中所有的抽象方法。

b)若一個抽象類實現了介面,那麼,該抽象類可以實現介面中的抽象方法,也可以不實現。

c)若一個普通的子類繼承了抽象父類,該抽象的父類又實現了介面,那麼,該普通的子類必須得重寫,抽象父類中所有的抽象方法,並且,還必須得實現抽象的父類尚未實現的抽象方法。

11樓:匿名使用者

誰說的,預設方法就不需要實現

java裡實現一個介面的類必須要實現介面裡的所有方法嗎?

12樓:匿名使用者

實現介面或繼承抽象類的子類必須實現介面的所有方法或抽象類的所有抽象方法。

實現方案:

當一個類實現一個介面時,它必須實現該介面中的所有方法。(判斷題)

13樓:匿名使用者

對的必須實現該介面中的所有方法。當然 你也可以自定義介面中沒有的方法。

下次提問說清楚是什麼。。

java

java中 一個類實現了某介面 則必須實現該介面中的所有方法麼?

14樓:匿名使用者

不一定,抽象類實現某個介面,可以不實現所有介面的方法,可以由它的子類實現。

比如public inte***ce a

public abstract class aextend implements a

15樓:匿名使用者

如果定義為抽象類,就可以實現部分方法

16樓:匿名使用者

是的,不實現會報錯了!!用myeclips 是會提示的!

17樓:o雨落流星

是的。如果不需要時間實現那麼你寫介面的意義在哪兒?

18樓:al無解

分兩種情況 實現類如果事抽象類就不用實現介面裡面的所有方法,第二 實現的介面事函式式介面

java:一個類實現某個介面的時候可不可以只實現這個介面中的部分方法,還是必須實現介面中的全部方法呢

19樓:匿名使用者

必須實現全部方法 但是你可以這樣做

你先用一個類實現這個介面 但是在這個類中方法都是空的{}這樣 然後你可以繼承這個類 用新的方法來覆蓋那些空的方法 在gui程式設計中有一個介面卡的概念 就是這樣的

20樓:青鳥中關村專家

不一定,關鍵要看子類是否是抽象類。

如果子類是非抽象類,則必須實現介面中的

所有方法;

如果子類是抽象類,則可以不實現介面中的所有方法,因為抽象類中允許有抽象方法的存在!

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、抽象類是物件的抽象,然而介面是一種行為規範。

感謝老師讚美老師的話語,詩歌一定要有真情實感,要感人,謝謝了,寫好的加分

天使 一顆bai心安安靜靜地放著 就是要陪du你找到zhi 昨日流失的快dao樂 天涯深處播春深回 不勝落日比花紅 且把流雲答 做粉塵縱然無身也有情 冥冥之中 誰添滿了花的酒杯 春雨流播惹魂碎 風雪相伴醉紅塵 只是想那花間的流水 怕她再次 凋零,憔悴 就帶著你的美 來世還做輪迴 傳播精髓 漫漫紅塵 ...

機械製圖中一定要孔正軸負公差標註嗎

應該間隙配合使用時才會這樣標,至於半成品,看零件的精密程度吧。孔正軸負估計是因為你們要求間隙配合。半成品要不要標取決於產品的具體設計要求。配合尺寸肯定要標公差,非配合尺寸有時根據具體要求也可能標公差。你做工件的時候看下公差等級,如果是間隙配合就一定是你們領導要求的那樣,不過機械中也有過盈配合,可能你...

VLAN之間的通訊一定要通過路由器實現嗎?為什麼

必須要通過路由,因為兩個vlan就是不同的網路,所以沒有路由的話,資料只能在2層傳輸,普通的2層交換機是不能按照3層報頭的資訊進行 如果沒有vlan,那麼這個埠傳送出去的資料就會對整個網路產生廣播風暴或造成網路擁塞。類似於atm傳輸裡的vpi和vci。vlan間的通訊需要通過3層裝置來 原因本質上其...