抽象類
C#允許把類和方法聲明為abstract,即抽象類和抽象方法。抽象類通常代表一個抽象概念,它提供一個繼承的出發點,當設計一個新的對象類時,一定是用來繼承的,所以,在一個以繼承關系形成的等級結構裡面,樹葉節點應當是具體類,而樹枝節點均應當是抽象類。抽象類擁有盡可能多的共同代碼,擁有盡可能少的數據。
接口
接口是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦類實現了接口,類就可以支持接口所指定的所有屬性和成員。聲明接口在語法上與聲明抽象類完全相同,但不允許提供接口中任何成員的執行方式。所以接口不能實例化,不能有構造方法和字段;不能有修飾符,比如public、private等;不能聲明虛擬的或靜態的等。還有實現接口的類就必須要實現接口中的所有方法和屬性。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHN0cm9uZz4gICAgvdO/2tPDaW50ZXJmYWNlyfnD96Ostviyu8rHY2xhc3OjrL3Tv9rD+7PGx7DSqrzToa5J",接口中的方法或屬性前面不能有修飾符、方法沒有方法體。
抽象類與接口的區別:
類是對對象的抽象,抽象類是對類的抽象,接口是對行為的抽象。
如果行為跨越不同類的對象,可使用接口;對於一些相似的類對象,用繼承抽象類
從設計角度講,抽象類是從子類中發現公共的東西,泛化出父類,然後子類繼承父類,而接口是根本不知子類的存在,方法如何實現還不確認,預先定義。