1樓:匿名使用者
1.類是對物件的抽象,可以把抽象類理解為把類當作物件,抽象成的類叫做抽象類。而介面只是乙個行為的規範或規定,微軟的自定義介面總是後帶able欄位,證明其是表述一類類「我能做。。。
2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調物帶用的方法;
3.乙個類一次可以實現若干個介面,但是只能擴充套件乙個父類。
4.介面可以用於支援**,而繼承並不具備這個特點。
5.抽象類不能被密封。
6.抽象類實現的具體方法預設為虛的,但實現介面的類中的介面方法卻預設為非虛的,當然您也可以宣告為虛的。
7.(介面)與非抽象類類似,抽象類也必須為在該類的罩廳蘆基類列表中列出的介面的所有成員提供它自己的實現。但是,允許抽象類將介面方法對映到抽象方法上。
8.抽象類實現了oop中的乙個原則,把可變的與不可變的分離。抽象類和介面就是定義為不可變的,而把可變的座位子類去實現。
9.好的介面定義應該是具有專一功能性的,而不是多功能的,否則造成介面汙染。如果乙個類只是實現了這個介面的中乙個功能,而不得不去實現介面中的其他方法,就叫介面汙染。
10.盡量避免使用繼承來實現組建功能,而是使用黑箱復用,即物件組合。因為繼承的層次增多,造成最直接的後果就是當你呼叫這個類群中某一類,就必須把他們全部載入到棧中!
後伏配果可想而知。(結合堆疊原理理解)。同時,有心的朋友可以留意到微軟在構建乙個類時,很多時候用到了物件組合的方法。
比如中,page類,有server request等屬性,但其實他們都是某個類的物件。使用page類的這個物件來呼叫另外的類的方法和屬性,這個是非常基本的乙個設計原則。
11.如果抽象類實現介面,則可以把介面中方法對映到抽象類中作為抽象方法而不必實現,而在抽象類的子類中實現介面中方法。
2樓:酒尖鹹
乙個類一次可以實現若干個介面,但是只能擴充套件乙個父類;
3樓:匿名使用者
抽象類中的方法可以有實現,介面不可以。
乙個類只能有乙個抽象父類,但可以實現多個介面。
在抽象類中實現子類中常用的方法,子類可以直接呼叫父類中的方法,減少**和提高復用。
抽象類不渣並能例項化,例如鳥;
假設鳥都會叫,但叫法不一派緩樣,這樣你就應該把叫()這個方法寫成抽象方法。
所有繼承了鳥這個抽象類的子類都要實現叫()這個方法,但方法的實現不一樣,例如燕子和麻雀叫得不一樣;
再者有些鳥會飛,有些不會,那你就該寫乙個飛的介面,實現了飛()這個方法,讓乙隻鳥的子類去繼承這個介面,實現飛()的方法。
簡單說來,抽象類應該對相同性質的物件進行抽象,而介面則不需要,例如鳥會飛和飛機會飛是不一樣的,不應該讓鳥和塵梁模飛機繼承同乙個抽象,而應該讓它們實現同乙個飛的介面。
c#中抽象類和介面的區別
在c#中,介面與抽象基類的區別在於( ) 50
4樓:匿名使用者
a,的了,詳細的只要看下書本上的定義就可以了呢。
c#,簡述介面與抽象類的異同
5樓:thomas狗蛋
介面是抽象的集合,意思就是介面中是不能存在實現的,介面主要是定義行為,就是「能幹什麼」,如果乙個類實現了乙個介面,那麼就要實現它的方法,也就是要實現它定義的那些功能。那麼抽象類中是可以存在實現(也就是可以存在非抽象方法的)的,抽象類中的實現在非抽象的子類中是可以直接呼叫的,然後抽象類的抽象方法會一直等到它的若干後代(必須是不為抽象類的後代)實現,也就是說如果抽象類的子類還是抽象類,那麼可以等到它的某乙個後代為實類的時候去實現那個抽象方法。
6樓:
抽象類是定義,介面是規範。
c#net裡面抽象類和介面有什麼區別
7樓:冰悅精彩
抽象類有抽象的和不抽象的。
介面都是抽象的。。。
8樓:炮灰向前衝
介面:只有方法的定義。不可以寫實現。
抽象類:可以只寫方法的定義。也可以寫實現。
類:只可以寫實現。
c#中抽象類和介面的相同點與區別
9樓:夢醒十分
介面是引用型別的,類似於類,和抽象類的相似之處有三點:
1、不能例項化;
2、包含未實現的方法宣告;
3、派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員(不僅是方法包括其他成員);
j**a中抽象類和介面的區別?
c#中,抽象類和介面有哪些區別
10樓:匿名使用者
抽象類的成員可以具有訪問級別,而介面。
的成員全部public級別。
抽象類可以包含內欄位,而界面容不可以(介面可以用屬性來代替)抽象類可以繼承介面,而介面不能繼承抽象類。
抽象類的成員可以具有具體實現,而介面不行。
這些是語法上的區別,實際上用途也不同。
簡單的例子。
汽車能鳴叫(beep),手機也能響鈴(beep)如果要為它們都定義乙個方法beep
用抽象類就不合適了,畢竟區別太大。
而可以定義乙個ibeep的介面,讓他們有相同的行為beep所以說 抽象類適合用來表現共同的本質(比如貓,狗都是動物)而介面更合適表現擁有共同的行為。
11樓:匿名使用者
1. 介面支援多繼承;抽象類不能實現多繼承。
2. 介面只能定義抽象規則;抽象類既可以定義規內則,還可能提供容已實現的成員。
3. 介面是一組行為規範;抽象類是乙個不完全的類,著重族的概念。
4. 介面可以用於支援**;抽象類不能實現**,因為繼承不支援。
5. 介面只包含方法、屬性、索引器、事件的簽名,但不能定義欄位和包含實現的方法;抽象類可以定義字段、屬性、包含有實現的方法。
6. 介面可以作用於值型別和引用型別;抽象類只能作用於引用型別。例如,struct就可以繼承介面,而不能繼承類。
搜的。。
c#抽象類和介面的區別
12樓:匿名使用者
介面是對外介面函式的約束,也可以說是共同特性的類提取的共同部分。
抽象類是包含有抽象函式的類,除去抽象函式,其他函式是有正常實現的功能。
抽象類也是一種類,抽象類和介面的區別本質上是類和介面的區別。就是介面是約束、規範,類是具體的實現。
什麼是介面?介面的作用是什麼?它與抽象類有什麼區別
介面算是一種規範,一種契約。規定了實現該介面的類必須有介面方法的實現。可以把他理解為沒有資料成員的,所有方法均實現的抽象類 介面是定義的一個標準,只要符合介面標準的類,就可以用共同的命令去操作。比如定義了一個6mm的螺絲帽,只要符合6mm螺絲帽的特點,就可以和其它部件接合,而不管這個螺絲帽是怎麼做的...
C 中的“類”是什麼意思,c 中的類和類的物件是什麼意思
光棍誓言 類就是就是有類似屬性的集合。舉個例子。就像是學生類是吧。這個類就可以定義許多有一定屬性的學生。就像身高,體重什麼的。因為這都是學生的屬性。不過0基礎的話,還是先學c,學會結構體。接著學c 過渡到類。真的,零基礎直接殺c 是吃力的。 令狐蛋蛋 相當於一個集合,型別。這個集體有共同的特徵,比如...
c 指標 區別,c 中別名 和指標 的區別
這是個運算優先順序的問題,由於 運算的優先順序大於 於是 abc 1先取出abc裡面的內容,再進行 1運算,結果就是abc內儲存的值加1 而 會改變運算順序,先算abc 1,這是將指標abc向下移了一位,再作 運算,也就是取出了指標abc所指位置下乙個位置裡面儲存的內容,這個運算一般只在陣列中進行,...