C 抽象類 和結構 和類是的用處包括建構函式 介面

2025-01-02 19:45:15 字數 4696 閱讀 6756

1樓:匿名使用者

建構函式是乙個類初始化的顯示宣告,主要用於對於某些引數的顯示賦值或者隱式賦值(預設引數值),如果乙個類存在父類,必選顯示的呼叫父類的建構函式。

結構體:靜態初始化話快,在類第一次載入記憶體的時候呼叫,可以用於初始化資源。在構造方法之前。

介面:是在抽象類之上的一層抽象,定義的是所有這種行為的一種共有的契約。提供了極大的靈活性。無需修改客戶端**就可以更換不同的實現。

抽象類:特定的某種型別的抽象。相對於介面他是確定的一種型別,可以結合模板方法模式。在父類中實現大部分共有的邏輯,在子類中實現子類特有的邏輯。

類:是某種事物的抽象,是物件導向的有機組合體。他代表了明確事物所特有的屬性和方法。可以重用。這也是物件導向和麵向方面的最大區別。

2樓:匿名使用者

c#建構函式主要用途:分為1·無參,2·帶參建構函式。呼叫類的方法則首先呼叫該類的建構函式。

c#結構主要用途:跟類非常相似,定義struct 結構名{屬性;方法;}需注意屬性不能賦初值。使用時無需new如:

結構名 jiegou;jiegou.屬性="hello world !"c# 介面主要用途:

介面就是提供一組有效的訪問。將其功能包含起來,需要時只需呼叫即可,無需明白怎麼實現。c# 抽象類主要用途:

抽象類是多型的特性,主要用途是父類寫了抽象方法,子類可以直接使用,或重寫抽象方法。c# 類主要用途:便於維護,什麼類寫什麼東西,調理清晰。

3樓:匿名使用者

面嚮物件語言的特性都大同小異。

c#中介面和抽象類區別

4樓:畫說漫談

這兩個是比較容易混淆的,理解之後就很容易區分。。

介面:1.所有方法都是抽象方法,2.所有的屬性都是靜態常量,3.沒有建構函式,4.乙個類可以同時實現多個介面,5.乙個介面可以同時繼承多個介面。

抽象類:1.可以有非抽象方法。

2.屬性中可以有非靜態常量。

3.有建構函式。

4.乙個類只能繼承乙個父類。

5.乙個類可以被多個子類繼承。

再引申一點(上面的都懂了,再看下面的,否則你會更容易亂):介面中所有方法都是抽象方法並不是絕對的。在c#版本以後,介面中允許有非抽象方法,而且可以有方法體。

但是繼承該介面的子類,無法繼承這些非抽象方法。繼承類例項化的物件也不能呼叫。具體怎麼用那就是其他問題了。

作為兩者的比較,你只要理解上面的5點就行了。

在c#中,介面與抽象基類的區別在於( )

5樓:網友

a,的了,詳細的只要看下書本上的定義就可以了呢。

請教在c#設計程式的時候,什麼時候用介面,什麼時候用抽象類,什麼是用結構

6樓:匆匆聰明

抽象類與介面:

抽象類和介面都包含可以由派生類繼承的成員,他們都不能例項化,但可以宣告它們的變數。如果這樣做,就可以使用多型性把繼承這兩種型別的物件指定給它們的變數。接著聽過這些變數來使用這些型別的成員,但不能直接訪問派生類的其它成員。

抽象類和介面的區別主要有以下區別:

它們的派生類只能繼承乙個類,即只能繼承乙個基類,即只能直接繼承乙個抽象類,但可以繼承多個介面。

抽象類中可以定義成員的實現,但介面中不可以。

抽象類中可以包含欄位、建構函式、解構函式、靜態成員和常量等,但介面不行。

抽象類中成員可以是私有的(只要它不適抽象的)、受保護的、內部的、受保護和內部的,但介面成員必須是公共的。

抽象類和介面這兩種型別用於完全不同的目的。抽象類主要用作物件系列的基類,共享某些主要特性,例如共同的目的和結構。介面則主要用於類,這些類在基礎水平上有所不同,但仍可以完成某些相同的任務。

結構:結構是一種值型別,所有的結構都繼承自。結構通常用於封裝一組相關的變數,結構中可以包含建構函式、常量、欄位、方法、屬性、運算子、事件和巢狀型別等。

結構通常用於較小的資料型別。

7樓:網友

介面和抽象類,其實是一樣的。在架構中可以使用抽象類並做簡單實現有助於重寫規則方便規則定義。介面就是子級使用,方便。

結構有助於資料儲存方便快捷。這些都需要自己實際理解。希望你滿意這個答案。

8樓:網友

基本是**中有一部分方法需要事先有實現的就用抽象類,否則用介面。

9樓:網友

c# 程式設計的時候一般 最頂級的父類都用介面,下一級子類用抽象類,至於結構就得應實際情況了。

10樓:網友

介面就是子級使用。

抽象類一般用於總體框架的編寫。

結構主要用於固定結構物件的定義。

我想問一下c#介面和抽象類的具體用處

11樓:手機使用者

- -還高分呢,現在是0分。。。

抽象類是乙個不能直接例項化的類,通過關鍵字:abstract宣告,如果該類中有抽象方法,則必須由繼承它的子類去實現!

結構:struct 屬於值型別,於用封裝一些簡單的變數。

介面:用於類定行為規範,和抽像類差不多,但介面中只能定義方法,事件,屬性,索引器,不能包含方法的實現!

12樓:蟹蟹的影子

大型軟體開發還是用得到的。

c#中抽象和介面的區別

13樓:匿名使用者

1.類是對物件的抽象,可以把抽象類理解為把類當作物件,抽象成的類叫做抽象類。而介面只是乙個行為的規範或規定,微軟的自定義介面總是後帶able欄位,證明其是表述一類類「我能做。。。

2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調物帶用的方法;

3.乙個類一次可以實現若干個介面,但是隻能擴充套件乙個父類。

4.介面可以用於支援**,而繼承並不具備這個特點。

5.抽象類不能被密封。

6.抽象類實現的具體方法預設為虛的,但實現介面的類中的介面方法卻預設為非虛的,當然您也可以宣告為虛的。

7.(介面)與非抽象類類似,抽象類也必須為在該類的罩廳蘆基類列表中列出的介面的所有成員提供它自己的實現。但是,允許抽象類將介面方法對映到抽象方法上。

8.抽象類實現了oop中的乙個原則,把可變的與不可變的分離。抽象類和介面就是定義為不可變的,而把可變的座位子類去實現。

9.好的介面定義應該是具有專一功能性的,而不是多功能的,否則造成介面汙染。如果乙個類只是實現了這個介面的中乙個功能,而不得不去實現介面中的其他方法,就叫介面汙染。

10.儘量避免使用繼承來實現組建功能,而是使用黑箱複用,即物件組合。因為繼承的層次增多,造成最直接的後果就是當你呼叫這個類群中某一類,就必須把他們全部載入到棧中!

後伏配果可想而知。(結合堆疊原理理解)。同時,有心的朋友可以留意到微軟在構建乙個類時,很多時候用到了物件組合的方法。

比如中,page類,有server request等屬性,但其實他們都是某個類的物件。使用page類的這個物件來呼叫另外的類的方法和屬性,這個是非常基本的乙個設計原則。

11.如果抽象類實現介面,則可以把介面中方法對映到抽象類中作為抽象方法而不必實現,而在抽象類的子類中實現介面中方法。

14樓:酒尖鹹

乙個類一次可以實現若干個介面,但是隻能擴充套件乙個父類;

15樓:網友

抽象類中的方法可以有實現,介面不可以。

乙個類只能有乙個抽象父類,但可以實現多個介面。

在抽象類中實現子類中常用的方法,子類可以直接呼叫父類中的方法,減少**和提高複用。

抽象類不渣並能例項化,例如鳥;

假設鳥都會叫,但叫法不一派緩樣,這樣你就應該把叫()這個方法寫成抽象方法。

所有繼承了鳥這個抽象類的子類都要實現叫()這個方法,但方法的實現不一樣,例如燕子和麻雀叫得不一樣;

再者有些鳥會飛,有些不會,那你就該寫乙個飛的介面,實現了飛()這個方法,讓乙隻鳥的子類去繼承這個介面,實現飛()的方法。

簡單說來,抽象類應該對相同性質的物件進行抽象,而介面則不需要,例如鳥會飛和飛機會飛是不一樣的,不應該讓鳥和塵梁模飛機繼承同乙個抽象,而應該讓它們實現同乙個飛的介面。

在c#中,類,抽象類和介面之間有什麼共同點和不同點?

16樓:僑思真祭穆

1.介面是包含一組虛方法的抽象型別,其中每一種方法都有其名稱、引數和返回值。介面方法不能包含任何實現,clr允許介面可以包含事件、屬性、索引器、靜態方法、靜態欄位、靜態建構函式以及常數。

如果建立的功能將在大範圍的全異物件間使用,則使用介面。

2.抽象類提供多個派生類共享基類的公共定義,它既可以提供抽象方法,也可以提供非抽象方法。抽象類不能例項化,必須通過繼承由派生類實現其抽象方法。

相同點:都不能被直接例項化,都可以通過繼承實現其抽象方法。

都是面向抽象程式設計的技術基礎,實現了諸多的設計模式。

不同點。介面支援多繼承;抽象類不能實現多繼承。

介面只能定義抽象規則;抽象類既可以定義規則,還可能提供已實現的成員。

介面是一組行為規範;抽象類是乙個不完全的類,著重族的概念。

介面可以用於支援**;抽象類不能實現**,因為繼承不支援。

介面只包含方法、屬性、索引器、事件的簽名,但不能定義欄位和包含實現的方法;抽象類可以定義欄位、屬性、包含有實現的方法。

介面可以作用於值型別和引用型別;抽象類只能作用於引用型別。例如,struct就可以繼承介面,而不能繼承類。

虛基類與抽象類的問題,純虛類 和抽象類 有什麼關係

當繼承關係自頂來至自 下出現菱形路線時,bai最底層的派生類必然du會重複繼承最頂zhi層基類的成dao員,所以定義虛基類是為了解決這種重複繼承的問題。抽象類是包含純虛擬函式的類,它不能定義物件,在類中定義虛擬函式是為了解決基類的指標能夠呼叫派生類的函式也就是所謂的 多型性 讓一個命令實現多種響應。...

c抽象類虛擬方法

樓上說的基本正確,但是對初學者來說是有誤導的。虛擬方法是標記為virtual,虛擬方法可以在子類 派生類中override 有的叫重寫,有的叫過載 抽象方法標記為abstract,抽象方法沒有方法體,抽象方法必須在子類 派生類中override 有的叫重寫,有的叫過載 通俗的說就是普通方法告訴子類怎...

C的抽象類中,抽象方法和純虛擬函式區別

問題1 含有virtual修飾符的方法稱為虛擬方法。不能像你說的那樣定義。問題2 1 虛擬方專法,子屬類可以選擇性重寫此方法,也可以不重寫 而抽象 abstract 方法,子類必須重寫。2 虛擬方法可以有實體,如 public virtual void vt 所以,可以直接呼叫虛擬方法 而抽象方法不...