下面例項定義了乙個抽象類和乙個介面,抽象類中定義乙個手機的屬性和方法,介面定義乙個玩遊戲的方法。
抽象類**:
//抽象類是乙個父類+約束 父類是為了實現**重用 約束是為了多型變化 單繼承 is a
public abstract class basephone
public string name
public string branch
public abstract void system();//約束下子類有這個方法 但又各不相同
public void call()
call");
}public void sendmsg()
sendmsg");}}
介面**:
//介面就是乙個約束 乙個類可以實現多個介面 告訴別人一定有什麼功能 can do
public inte***ce iexted
定義小公尺手機類,繼承抽象類basephone,並實現介面:
public class mi : basephone, iexted
playgame");
}public override void system()
system is android ");}}
定義蘋果手機類,繼承抽象類basephone,並實現介面:
public class iphone : basephone, iexted
playgame");
}public override void system()
system is ios ");}}
例項化物件並呼叫方法:
class program
}
執行結果:
蘋果手機和小公尺手機都有手機共同的屬性和方法,比如打**(call),傳送簡訊(sendmsg),但是它們的作業系統不同,所以將作業系統方法(system)定義為抽象方法,在父類(basephone)中不做實現,子類去重寫作業系統這個方法。
同時蘋果手機和小公尺手機都可以玩遊戲,所以將玩遊戲(playgame)的方法定義在介面中,實現介面的類必須實現介面中的每乙個方法。這樣蘋果手機和小公尺手機都擁有了玩遊戲的方法。
之所以把玩遊戲的方法定義在介面中,而不是在抽象類中。是這麼考慮的,除了手機可以玩遊戲外,平板和電視同樣可以玩遊戲,但是平板和電視不能打**和傳送簡訊。
總結:抽象類可以理解為是乙個父類+約束,父類是為了實現**的重用,約束是為了多型變化。抽象類只能單繼承。用英文表示抽象類這個概念的話可以表示為『is a』,表示是個什麼東西,比如上面的例子中的basephone,表示的就是手機。
介面就是純粹的約束,告訴別人有什麼功能。用英文表示介面這個概念的話可以表示為『can do』,表示是能夠做什麼。
在實際開發中,首先考慮使用介面,如果有**需要重用,則考慮使用抽象類。
抽象類 和 介面總結
抽象類和介面本質的區別 首先要明確,介面不是類,所以也不是抽象類。類是屬性和方法容器,但是這些屬性和方法沒有任何區別的堆積在一起,當開發人員要尋找某個方法時,將很不方便,這個時候,介面出現了,介面的出現就是為了解決這個問題。介面將類的內部屬性和方法進行分類,定義不同功能組的屬性和方法。抽象類體現的是...
抽象類和介面總結
當兩個類有著共同方法,共同的屬性,子類實際上是父類的乙個特殊形式,對於子類的特殊性則通過實行抽象方法去實現,應該定義個抽象模擬較合理,大大減少了重複 量。而如果只是規則相同,例如都需要實現相同的方法,方法內容是不同的,則應該使用介面比較合理,實現了多型。總而言之,介面與抽象類的區別主要在於使用的動機...
C 介面和抽象類的總結
一 介面的簡單實現 介面更好地實現了多型,體現了約定和實現相分離的原則。通過面向介面程式設計,可以降低 間的耦合性,提高 的可擴充套件性和可維護性。在物件導向程式設計中,提倡面向介面程式設計,而不是面向實現程式設計。面向介面程式設計意味著,開發系統時,主體架構使用介面,介面構成系統的骨架,這樣就可以...