1、什麼是抽象類?
答:類和類之間具有共同特徵,將這些共同特徵提取出來,形成抽象類。
2、類可以例項化物件嗎?
答:由於類本身不存在,因此抽象類無法建立物件。使用抽象類時,寫**可以使用多型(父型別引用指向子型別物件),這裡即抽象類作為父類。
3、抽象類中可以包含什麼?
① 一般方法、靜態方法和抽象方法,且抽象方法必須在抽象類中
② 靜態變數和成員變數
4、final 和 abstract 不能聯合使用,因為 final 修飾的類無法被繼承。
5、抽象類有構造方法,這個構造方法可以供子類使用。
exp:子類繼承抽象類,子類的無參構造第一行預設是 「super()」,預設呼叫抽象類的無參構造方法。1、什麼是介面?
答:介面可看作特殊的抽象類(介面是完全抽象,抽象類是半抽象)。介面也是一種「引用資料型別」,編譯後也是乙個 .class 位元組碼檔案。
2、介面可以例項化物件嗎?
答:由於介面是抽象類的特例,因此介面中也無法例項化和建立物件。使用介面時,寫**可以使用多型(父型別引用指向子型別物件),這裡即介面作為父類。
3、介面中可以包含什麼?
答:只能包含抽象方法和常量。
介面中的方法預設是 public abstract 型別,可省略; 介面中的變數預設是 public static final 型別,可省略。4、當乙個非抽象類實現介面,必須將介面中所有的抽象方法全部重寫。5、介面支援多繼承,乙個介面可以繼承多個介面,乙個類可以同時實現多個介面。
1、抽象類中有構造方法,介面中無構造方法。
2、介面和介面之間支援多繼承,類和類之間只能單繼承。
3、乙個類可以實現多個介面,但只能繼承乙個抽象類。
抽象類表示它是什麼,介面表示它能做什麼。舉乙個例子,乙個 person,他有眼睛、膚色,這些描述乙個人的特徵可以定義在抽象類中,而乙個人的行為如打籃球,所以這些可以定義在介面中。* 抽象類一般是對「特徵」的抽象。
* 介面一般是對「行為」的抽象。
有個俄羅斯人,他會打籃球,這個類可以這樣寫:
從程式設計角度看:
1、抽象類適合用來定義某個領域的固有屬性,也就是本質,介面適合用來定義某個領域的擴充套件功能。
2、當需要為一些類提供公共的實現**時,應優先考慮抽象類。因為抽象類中的非抽象方法可以被子類繼承下來,使實現功能的**更簡單。
3、當注重**的擴充套件性跟可維護性時,應當優先採用介面。①介面與實現它的類之間可以不存在任何層次關係,介面可以實現毫不相關類的相同行為,比抽象類的使用更加方便靈活;②介面只關心物件之間的互動的方法,而不關心物件所對應的具體類。介面是程式之間的乙個協議,比抽象類的使用更安全、清晰。一般使用介面的情況更多。
抽象類和介面的區別
要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 這些聽起來有些虛,舉個例...
抽象類和介面的區別
net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...
抽象類和介面的區別
net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...