成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談面向對象程序設計C#中的類

開發 后端
如果一個類使用非默認的構造函數,默認的情況是在其基類上尋找匹配于這個構造函數簽名的構造函數。除了base關鍵字外,還有一個this關鍵字,它指定在調用指定的構造函數前,.net實例化過程對當前類使用非默認的構造函數。

  類是面向對象程序設計的核心概念之一。

  1、類的定義

  簡單的定義就不多說了,之間看下表,修飾符的含義(使用abstract關鍵字的類是抽象類,這種類不能被實例化,只能被繼承;而使用sealed關鍵字的類是封裝類,這種類只能實例化,不能繼承):

  需要使用“:”來繼承基類和接口,最多可同時繼承一個基類以及很多接口,它們之間需要用“,”隔開。如:

  publicclassMyClass : Mybase, IMyInterface, IMySecondInterface{}

  2、接口的定義

  接口的定義方式與類相差不大,不活使用的是interface關鍵字,而不是class。例如:

 

  1.   interfaceIMyinterface  
  2.   {  
  3.   //Interface members  
  4.   } 

 

  由于接口不包含執行代碼,所以也就沒有抽象接口的概念,所以在聲明接口是一般使用public 和internal,不能使用abstract和sealed。

  3、構造函數和析構函數

  所有的類都有個默認的構造函數,該函數沒有參數,與類同名。我們在類的定義中可以包含幾個帶參數的構造函數,成為非默認的構造函數。在實例化對象時用new來選擇使用哪個構造函數。

 

  1.   classMyClass  
  2.   {  
  3.   publicMyClass()  
  4.   {  
  5.   //Default constructor code  
  6.   }  
  7.   publicMyClass(intmyInt)  
  8.   {  
  9.   //Nondefault constructor code(use myInt)  
  10.   }  
  11.   }  
  12.   MyClass myClass = newMyClass(3); 

 

  析構函數主要用于清理對象,聲明格式如下:

 

  1.   classMyClass  
  2.   {  
  3.   ~MyClass()  
  4.   {  
  5.   //Destructor body  
  6.   }  
  7.   } 

 

  構造函數的執行序列

  在實例化一個派生類時,必須先實例化這個派生類的基類,也就要先實例化這個基類的基類,以此類推,就要先實例化object類。

  因此無論實例化一個什么類,都需要先實例化System.Object類,也就是先執行System.Object.Object()。

  如果一個類使用非默認的構造函數,默認的情況是在其基類上尋找匹配于這個構造函數簽名的構造函數。如果沒有找到,則使用基類的默認構造函數。例如:

如果以下面的方式實例化:

  MyDerivedClass myObj = newMyDerivedClass();

  則執行的順序如下:System.Object.Object()——MyBaseClass.MyBaseClass()——MyDerivedClass.MyDerivedClass()

  MyDerivedClass myObj = newMyDerivedClass(1);

  則執行的順序如下:

  1. System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i)  
  2.   MyDerivedClass myObj = newMyDerivedClass(1,1); 

 

  則執行的順序如下:System.Object.Object()——MyBaseClass.MyBaseClass()——MyDerivedClass.MyDerivedClass(int i, int j)

  但是如果希望執行的順序為:System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i, int j)

  則需要將MyDerivedClass的非默認構造函數改為:

 

  1.   publicclassMyDerivedClass : MyBaseClass  
  2.   {  
  3.   ...  
  4.   publicMyDerivedClass(inti, intj) : base(i)  
  5.   {  
  6.   }  
  7.   } 

 

  base關鍵字指定.net實例化過程使用基類中匹配指定簽名的構造函數。

  除了base關鍵字外,還有一個this關鍵字,它指定在調用指定的構造函數前,.net實例化過程對當前類使用非默認的構造函數。如:

 

  1.   publicclassMyDerivedClass : MyBaseClass  
  2.   {  
  3.   publicMyDerivedClass() : this(5, 6)  
  4.   {  
  5.   }  
  6.   ...  
  7.   publicMyDerivedClass(inti, intj) : base(i)  
  8.   {  
  9.   }  
  10.   } 

 

  則執行的順序如下:System.Object.Object()——MyBaseClass.MyBaseClass(int i)——MyDerivedClass.MyDerivedClass(int i, int j)——MyDerivedClass.MyDerivedClass()

責任編輯:彭凡 來源: 博客園
相關推薦

2009-09-02 13:22:23

C#組件化程序設計

2011-07-05 15:22:04

程序設計

2011-07-05 15:59:57

面向對象編程

2011-07-05 16:05:43

面向對象編程

2024-05-27 00:00:00

C# 類參數數據

2022-06-07 14:13:58

Simula編程語言GNU cim

2011-07-10 15:36:54

C++

2009-05-08 09:46:37

微軟C#集合對象

2009-09-02 15:41:21

C# HTTPWebR

2009-08-19 17:12:18

C# Connecti

2009-08-12 11:24:25

C# String對象

2009-08-31 09:37:09

C# Employee

2009-08-03 15:06:43

C# Stack對象C# Queue對象

2009-09-02 17:28:26

C#程序設計Windows窗體

2011-07-22 13:41:57

java

2009-08-18 09:06:41

C#對象和集合

2009-09-02 16:36:37

C#調用Excel對象

2009-01-16 08:52:26

面向對象OOP編程

2009-09-02 16:23:27

C# Singleto

2009-08-07 17:32:17

C#編譯程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 做a网站 | 亚洲精品久久视频 | 中文字幕日韩专区 | 久久国内| 久久久蜜桃 | 99精品久久久 | 久久精品国产亚洲 | 亚洲三级在线 | 亚洲一区在线日韩在线深爱 | 在线免费观看毛片 | 欧洲亚洲精品久久久久 | 亚洲成人久久久 | 日韩福利 | 久久久人成影片免费观看 | 中文字幕在线一区二区三区 | 浴室洗澡偷拍一区二区 | 成人精品一区二区 | 久久av.com| 91成人免费| 日本精品一区二区三区视频 | 中文字幕一区二区三区精彩视频 | 国产99久久精品一区二区300 | 99久久国产 | 午夜精品一区二区三区在线视频 | 色婷婷国产精品综合在线观看 | 黄色播放 | 亚洲精品综合一区二区 | 国产亚洲精品精品国产亚洲综合 | 欧美日韩综合 | 日本一道本 | 欧美日韩精品中文字幕 | 久久精品欧美一区二区三区不卡 | 欧美日韩精品久久久免费观看 | 久久精品一| 国产一区二区三区在线看 | 日韩视频在线一区 | 丝袜美腿一区 | 五月槐花香 | 亚洲视频欧美视频 | 日韩中文字幕av | 国产精品久久久久久久久久软件 |