欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C#類(lèi)和接口、虛方法和抽象方法及值類(lèi)型和引用類(lèi)型的區別_I love Haley Joel...
C#類(lèi)和接口、虛方法和抽象方法及值類(lèi)型和引用類(lèi)型的區別
2009-02-18 22:41

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

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

3. C#語(yǔ)言中,值類(lèi)型和引用類(lèi)型有何不同?

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

4.結構和類(lèi)的區別

解答
  1) 結構是一個(gè)值類(lèi)型,保存在棧上,而類(lèi)是一個(gè)引用類(lèi)型,保存在受管制的堆上。
  2) 對結構中的數據進(jìn)行操作比對類(lèi)或對象中的數據進(jìn)行操作速度要快。
  3) 一般用結構存儲多種類(lèi)型的數據,當創(chuàng )建一個(gè)很多類(lèi)或對象共用的小型對象時(shí),使用結構效率更高。
4.抽象方法和虛方法的區別
抽象方法
使用abstract關(guān)鍵字 public abstract bool Withdraw(…);
抽象方法是必須被派生類(lèi)覆寫(xiě)的方法。
抽象方法是可以看成是沒(méi)有實(shí)現體的虛方法
如果類(lèi)中包含抽象方法,那么類(lèi)就必須定義為抽象類(lèi),不論是否還包含其它一般方法

虛方法
使用virtual關(guān)鍵字 public virtual bool Withdraw(…);
調用虛方法,運行時(shí)將確定調用對象是什么類(lèi)的實(shí)例,并調用適當的覆寫(xiě)的方法。
虛方法可以有實(shí)現體


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

虛擬方法和抽象方法有什么區別?

抽象方法只有聲明沒(méi)有實(shí)現,需要在子類(lèi)中實(shí)現;虛擬方法有聲明和實(shí)現,并且可以在子類(lèi)中覆蓋,也可以不覆蓋使用父類(lèi)的默認實(shí)現

虛擬方法有實(shí)現代碼

抽象方法則沒(méi)有,

并且抽象類(lèi)不能被實(shí)例化,只能實(shí)例化實(shí)現了全部抽象方法的派生類(lèi)

抽象方法是虛擬方法的一種
抽象方法沒(méi)有實(shí)現,它的存在只是為派生類(lèi)統一接口;派生類(lèi)應該實(shí)現這個(gè)方法
如果編寫(xiě)一個(gè)基類(lèi),它永遠不會(huì )被實(shí)現,那么就應該將這個(gè)類(lèi)中的一個(gè)或多個(gè)方法定義為
抽象方法。

抽象方法只有聲明沒(méi)有實(shí)現,需要在子類(lèi)中實(shí)現;虛擬方法有聲明和實(shí)現,并且可以在子類(lèi)中覆蓋,也可以不覆蓋使用父類(lèi)的默認實(shí)現

補充一點(diǎn)

只允許在抽象類(lèi)中使用抽象方法聲明

學(xué)習

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

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C#基礎(1)
三種獲取類(lèi)的方法:1)class.forName(); 2)類(lèi)名.class; 3)實(shí)例.getClass()。
Java面試寶典:用這100個(gè)問(wèn)答搞定面試官
Java筆記
C#和.NET Framework還允許用戶(hù)根據這些簡(jiǎn)單的類(lèi)型定義復合類(lèi)型。
Java中抽象類(lèi)和接口的區別
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久