一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C#類和接口、虛方法和抽象方法及值類型和引用類型的區(qū)別_I love Haley Joel...

 Alex847 2009-02-26
C#類和接口、虛方法和抽象方法及值類型和引用類型的區(qū)別
2009-02-18 22:41

1.C#類和接口的區(qū)別
接口是負(fù)責(zé)功能的定義,項目中通過接口來規(guī)范類,操作類以及抽象類的概念!
而類是負(fù)責(zé)功能的具體實現(xiàn)!
在類中也有抽象類的定義,抽象類與接口的區(qū)別在于:
抽象類是一個不完全的類,類里面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業(yè)化。
但接口是一個行為的規(guī)范,里面的所有東西都是抽象的!
一個類只可以繼承一個基類也就是父類,但可以實現(xiàn)多個接口
PS:接口除了規(guī)范一個行為之外,在具體項目中的實際作用也是十分重要的,在面向?qū)ο蟮脑O(shè)計原則以及設(shè)計模式的使用中,無不體現(xiàn)作為一個接口的使用好處,最直接的就是設(shè)計原則中OCP(開放封閉原則),我們使用接口,而不需要關(guān)心他的具體實現(xiàn),具體實現(xiàn)的細(xì)節(jié)變化也無關(guān)客戶端(使用接口的類)的使用,對與擴展是開放的,我們可以另寫一個接口的實現(xiàn)來擴展當(dāng)前程序,而不影響上層的使用,但對修改是封閉的,即我們不能夠再去修改接口的定義,當(dāng)然這個“不能夠”是指在規(guī)范原則上不應(yīng)該這么做!  

2.抽象類和接口的區(qū)別
答:
抽象類(abstract class)可以包含功能定義和實現(xiàn),接口(interface)只能包含功能定義
抽象類是從一系列相關(guān)對象中抽象出來的概念, 因此反映的是事物的內(nèi)部共性;接口是為了滿足外部調(diào)用而定義的一個功能約定, 因此反映的是事物的外部特性
分析對象,提煉內(nèi)部共性形成抽象類,用以表示對象本質(zhì),即“是什么”
為外部提供調(diào)用或功能需要擴充時優(yōu)先使用接口

3. C#語言中,值類型和引用類型有何不同?

解答
  值類型和引用類型的區(qū)別在于,值類型的變量直接存放實際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對象的引用。
  值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實際數(shù)據(jù)的地址保存在堆棧中,而實際數(shù)據(jù)則保存在堆中。注意,堆和堆棧是兩個不同的概念,在內(nèi)存中的存儲位置也不相同,堆一般用于存儲可變長度的數(shù)據(jù),如字符串類型;而堆棧則用于存儲固定長度的數(shù)據(jù),如整型類型的數(shù)據(jù)int(每個int變量占用四個字節(jié))。由數(shù)據(jù)存儲的位置可以得知,當(dāng)把一個值變量賦給另一個值變量時,會在堆棧中保存兩個完全相同的值;而把一個引用變量賦給另一個引用變量,則會在堆棧中保存對同一個堆位置的兩個引用,即在堆棧中保存的是同一個堆的地址。在進行數(shù)據(jù)操作時,對于值類型,由于每個變量都有自己的值,因此對一個變量的操作不會影響到其它變量;對于引用類型的變量,對一個變量的數(shù)據(jù)進行操作就是對這個變量在堆中的數(shù)據(jù)進行操作,如果兩個引用類型的變量引用同一個對象,實際含義就是它們在堆棧中保存的堆的地址相同,因此對一個變量的操作就會影響到引用同一個對象的另一個變量。

4.結(jié)構(gòu)和類的區(qū)別

解答
  1) 結(jié)構(gòu)是一個值類型,保存在棧上,而類是一個引用類型,保存在受管制的堆上。
  2) 對結(jié)構(gòu)中的數(shù)據(jù)進行操作比對類或?qū)ο笾械臄?shù)據(jù)進行操作速度要快。
  3) 一般用結(jié)構(gòu)存儲多種類型的數(shù)據(jù),當(dāng)創(chuàng)建一個很多類或?qū)ο蠊灿玫男⌒蛯ο髸r,使用結(jié)構(gòu)效率更高。
4.抽象方法和虛方法的區(qū)別
抽象方法
使用abstract關(guān)鍵字 public abstract bool Withdraw(…);
抽象方法是必須被派生類覆寫的方法。
抽象方法是可以看成是沒有實現(xiàn)體的虛方法
如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其它一般方法

虛方法
使用virtual關(guān)鍵字 public virtual bool Withdraw(…);
調(diào)用虛方法,運行時將確定調(diào)用對象是什么類的實例,并調(diào)用適當(dāng)?shù)母矊懙姆椒ā?br>虛方法可以有實現(xiàn)體


---------------------------------------------------------------------------------------------

虛擬方法和抽象方法有什么區(qū)別?

抽象方法只有聲明沒有實現(xiàn),需要在子類中實現(xiàn);虛擬方法有聲明和實現(xiàn),并且可以在子類中覆蓋,也可以不覆蓋使用父類的默認(rèn)實現(xiàn)

虛擬方法有實現(xiàn)代碼

抽象方法則沒有,

并且抽象類不能被實例化,只能實例化實現(xiàn)了全部抽象方法的派生類

抽象方法是虛擬方法的一種
抽象方法沒有實現(xiàn),它的存在只是為派生類統(tǒng)一接口;派生類應(yīng)該實現(xiàn)這個方法
如果編寫一個基類,它永遠(yuǎn)不會被實現(xiàn),那么就應(yīng)該將這個類中的一個或多個方法定義為
抽象方法。

抽象方法只有聲明沒有實現(xiàn),需要在子類中實現(xiàn);虛擬方法有聲明和實現(xiàn),并且可以在子類中覆蓋,也可以不覆蓋使用父類的默認(rèn)實現(xiàn)

補充一點

只允許在抽象類中使用抽象方法聲明

學(xué)習(xí)

其實大家首先要搞清楚,虛方法與多態(tài)性關(guān)系密切,虛方法允許派生類完全或部分重寫該類的方法,需寫方法體。抽象類中可以包含抽象方法與一般的方法,抽象類不可以new,抽象方法只是一個定義,沒有方法體,也就是沒有{},也不要在里面寫內(nèi)容。它們兩個相像的一點是都用override重寫

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    色老汉在线视频免费亚欧| 日本亚洲精品在线观看| 国产传媒精品视频一区| 粉嫩国产一区二区三区在线| 成人精品欧美一级乱黄| 国产欧美日韩视频91| 麻豆tv传媒在线观看| 成年人免费看国产视频| 国产精品久久男人的天堂| 欧美国产在线观看精品| 麻豆视传媒短视频在线看| 粉嫩国产美女国产av| 欧美日韩亚洲精品内裤| 欧美国产日产综合精品| 欧美夫妻性生活一区二区| 九九热精品视频免费观看| 国产午夜精品美女露脸视频| 国产成人精品午夜福利av免费| 午夜精品一区二区av| 欧美日韩亚洲国产精品| 99久只有精品免费视频播放| 久久99精品国产麻豆婷婷洗澡 | 久久国产青偷人人妻潘金莲| 少妇熟女精品一区二区三区| 免费特黄一级一区二区三区| 亚洲欧美日韩中文字幕二欧美| 国内女人精品一区二区三区| 91麻豆精品欧美一区| 亚洲中文字幕在线观看黑人| 日本高清一区免费不卡| 国产一区二区三区四区中文| 欧美人禽色视频免费看| 中国美女草逼一级黄片视频| 香港国产三级久久精品三级| 欧美人禽色视频免费看| 香港国产三级久久精品三级| 午夜福利直播在线视频| 高中女厕偷拍一区二区三区| 亚洲五月婷婷中文字幕| 一区二区日韩欧美精品| 亚洲国产婷婷六月丁香|