程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#類和接口、虛方法和抽象方法及值類型和引用類型的區別(1)

C#類和接口、虛方法和抽象方法及值類型和引用類型的區別(1)

編輯:關於C語言

1.C#類和接口的區別

接口是負責功能的定義,項目中通過接口來規范類,操作類以及抽象類的概念!

而類是負責功能的具體實現!

在類中也有抽象類的定義,抽象類與接口的區別在於:

抽象類是一個不完全的類,類裡面有抽象的方法,屬性,也可以有具體的方法和屬性,需要進一步的專業化。

但接口是一個行為的規范,裡面的所有東西都是抽象的!

一個類只可以繼承一個基類也就是父類,但可以實現多個接口

PS:接口除了規范一個行為之外,在具體項目中的實際作用也是十分重要的,在面向對象的設計原則以及設計模式的使用中,無不體現作為一個接口的使用好處,最直接的就是設計原則中OCP(開放封閉原則),我們使用接口,而不需要關心他的具體實現,具體實現的細節變化也無關客戶端(使用接口的類)的使用,對與擴展是開放的,我們可以另寫一個接口的實現來擴展當前程序,而不影響上層的使用,但對修改是封閉的,即我們不能夠再去修改接口的定義,當然這個“不能夠”是指在規范原則上不應該這麼做!

2.抽象類和接口的區別

答:

抽象類(abstract class)可以包含功能定義和實現,接口(interface)只能包含功能定義

抽象類是從一系列相關對象中抽象出來的概念, 因此反映的是事物的內部共性;接口是為了滿足外部調用而定義的一個功能約定, 因此反映的是事物的外部特性

分析對象,提煉內部共性形成抽象類,用以表示對象本質,即“是什麼”

為外部提供調用或功能需要擴充時優先使用接口

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

解答

值類型和引用類型的區別在於,值類型的變量直接存放實際的數據,而引用類型的變量存放的則是數據的地址,即對象的引用。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved