D 程式設計 - 類與物件



類是 D 程式設計的核心特性,支援面向物件程式設計,通常被稱為使用者定義型別。

類用於指定物件的結構,它將資料表示和操作該資料的方法組合成一個簡潔的包。類中的資料和函式稱為類的成員。

D 類定義

當您定義一個類時,您定義了一個數據型別的藍圖。這實際上並沒有定義任何資料,但它定義了類名的含義,即類物件將包含什麼以及可以對這樣的物件執行哪些操作。

類定義以關鍵字class開頭,後跟類名;以及類體,用一對大括號括起來。類定義後面必須跟一個分號或宣告列表。例如,我們使用關鍵字class定義了 Box 資料型別,如下所示:

class Box { 
   public: 
      double length;   // Length of a box 
      double breadth;  // Breadth of a box 
      double height;   // Height of a box 
}

關鍵字public確定其後跟隨的類成員的訪問屬性。公共成員可以在類物件的範圍內從類外部訪問。您還可以將類的成員指定為privateprotected,我們將在下一節中討論。

定義 D 物件

類為物件提供藍圖,因此基本上物件是從類建立的。您使用與宣告基本型別變數完全相同的宣告來宣告類物件。以下語句聲明瞭兩個 Box 類的物件:

Box Box1;          // Declare Box1 of type Box 
Box Box2;          // Declare Box2 of type Box 

Box1 和 Box2 這兩個物件都有自己資料成員的副本。

訪問資料成員

可以使用直接成員訪問運算子 (.) 訪問類物件的公共資料成員。讓我們嘗試以下示例來使事情更清楚:

import std.stdio;

class Box { 
   public: 
      double length;   // Length of a box 
      double breadth;  // Breadth of a box 
      double height;   // Height of a box 
}
  
void main() { 
   Box box1 = new Box();    // Declare Box1 of type Box 
   Box box2 = new Box();    // Declare Box2 of type Box 
   double volume = 0.0;     // Store the volume of a box here  
   
   // box 1 specification 
   box1.height = 5.0; 
   box1.length = 6.0; 
   box1.breadth = 7.0; 
   
   // box 2 specification 
   box2.height = 10.0; 
   box2.length = 12.0; 
   box2.breadth = 13.0;
   
   // volume of box 1 
   volume = box1.height * box1.length * box1.breadth; 
   writeln("Volume of Box1 : ",volume);
   
   // volume of box 2 
   volume = box2.height * box2.length * box2.breadth; 
   writeln("Volume of Box2 : ", volume); 
} 

當以上程式碼編譯並執行時,會產生以下結果:

Volume of Box1 : 210 
Volume of Box2 : 1560 

需要注意的是,私有和受保護的成員不能直接使用直接成員訪問運算子 (.) 訪問。稍後您將學習如何訪問私有和受保護的成員。

D 中的類和物件

到目前為止,您已經對 D 類和物件有了非常基本的瞭解。還有更多與 D 類和物件相關的有趣概念,我們將在下面列出的各個子部分中進行討論:

序號 概念及描述
1 類成員函式

類成員函式是在類定義中定義或其原型與任何其他變數一樣位於類定義中的函式。

2 類訪問修飾符

類成員可以定義為 public、private 或 protected。預設情況下,成員將被假定為 private。

3 建構函式和解構函式

類建構函式是類中的一種特殊函式,在建立類的新的物件時被呼叫。解構函式也是一種特殊函式,在建立的物件被刪除時被呼叫。

4 D 中的 this 指標

每個物件都有一個特殊的指標this,它指向物件本身。

5 指向 D 類的指標

指向類的指標與指向結構體的指標完全相同。實際上,類實際上只是一個包含函式的結構體。

6 類的靜態成員

類的成員資料和成員函式都可以宣告為靜態的。

廣告