C#---類、結構、接口

類和結構的區別
  • 類當中默認的有一個無參數的構造函數
  • 當在類中寫一個有參數的構造函數,默認無參數的構造函數被幹掉了
  • 類中寫構造函數參數列表中參數個數可以不確定

結構

  • 在結構中默認的也有一個無參數的構造函數

  • 當在結構中寫一個有參數的構造函數,默認的無參數的構造函數還有,沒被幹掉

  • 在結構中寫構造函數,要把所有的字段都要完全賦值

類是引用類型,結構是值類型

值類型和應用類型的區別

1.將一個值類型變量賦給另一個值類型變量時,將賦值包含的值。引用類型變量的賦值只賦值對對象的引用,而不賦值對象本身
2.值類型不可能派生出新的類型:所有的值類型均隱式派生自System.ValueType。但與引用類型相同的是,結構也可以實現接口
3.值類型不可能包含Null值
4.每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。

在這裏插入圖片描述
在這裏插入圖片描述

接口和類有什麼異同
不同點:
  • 不能直接實例化接口
  • 接口不包含方法的實現
  • 接口可以多繼承,類只能單繼承
  • 類定義可在不同的源文件之間進行拆分

相同點:

  • 接口、類和結構都可以從多個接口繼承
  • 接口類似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的所有成員
  • 接口和類都可以包含事件、索引器、方法和屬性

C# 支持多重繼承嗎?
類之間不支持,接口之間支持。類對接口叫做實現,不叫繼承,類是爹、接口時能力。能擁有多個能力,但不能有多個爹

抽象類和接口有什麼區別

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

不同點:

  • 接口支持多繼承;抽象類不能實現多繼承
  • 接口只能定義行爲;抽象類既可以定義行爲,還可能提供實現
  • 接口可以用於支持回調;抽象類不能實現回調,因爲繼承不支持
  • 接口只包含方法、屬性、索引器、事件的簽名,但不能定義字段和包含實現的方法;抽象類可以定義字段、屬性、包含有實現的方法
  • 接口可以作用於值類型和引用類型;抽象類只能作用於引用類型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章