鍍金池/ 教程/ C++/ D語言類和對象
類的訪問修飾符
D語言運算符
D語言邏輯運算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運算符優(yōu)先級
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對象
類繼承
D語言字符
D語言教程
D語言關(guān)系運算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運算符
D中算術(shù)運算符
D語言類成員函數(shù)
D語言位運算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運算符重載
D語言嵌套switch語句
D語言基本語法
二元運算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

D語言類和對象

類是D編程的核心功能,它支持面向?qū)ο蟮木幊毯屯ǔ1环Q為用戶定義的類型。

類是用來指定對象的形式,它結(jié)合了數(shù)據(jù)表示和操縱數(shù)據(jù)成一個整齊的包裝方法。類中的數(shù)據(jù)和函數(shù)被稱為類的成員。

D編程類的定義:

當定義一個類時,定義了一個數(shù)據(jù)類型。這實際上并不定義任何數(shù)據(jù),但它并定義哪些類名表示,即是什么類的對象將包括與哪些操作可以在這樣一個對象來執(zhí)行。

類定義以關(guān)鍵字class后面的類名開頭和類體,由一對花括號括起來。類定義必須要么跟一個分號或聲明的列表。例如,我們定義使用關(guān)鍵字class如下框數(shù)據(jù)類型:

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

關(guān)鍵字public確定類跟在它后面的成員的訪問屬性。公共成員都可以從類的外部訪問類對象的范圍內(nèi)的任何地方。也可以指定一個類的成員為private或protected,我們將在一個分節(jié)討論。

定義D對象:

一類提供對象框架,所以基本上是一個對象從一個類創(chuàng)建的。我們聲明一個類的對象與排序完全相同的聲明我們聲明基本類型的變量。下面的語句聲明類Box的兩個對象:

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

兩個對象Box1和Box2都會有自己的數(shù)據(jù)成員的副本。

訪問數(shù)據(jù)成員:

一個類的對象的公共數(shù)據(jù)成員可以使用直接成員訪問運算符進行訪問(.)讓我們試試下面的例子中,直觀清楚:

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);
}

當上面的代碼被編譯并執(zhí)行,它會產(chǎn)生以下結(jié)果:

Volume of Box1 : 210
Volume of Box2 : 1560

要注意的是私有和受保護成員不能直接使用直接成員訪問運算符(.)進行訪問是重要的。我們將學(xué)習(xí)private和protected成員如何可以訪問。

類和對象的詳細信息:

到目前為止,已經(jīng)得到了類和對象非?;镜母拍睢S邢嚓P(guān)的為D編程中類和對象,我們將在下面列出各個子部分進一步討論相關(guān)的概念:

Concept 描述
類成員函數(shù) 一個類的成員函數(shù)是一個函數(shù),它有它的定義或像任何其他變量在類定義中它的原型。
類的訪問修飾符 類成員可以被定義為public,private或protected。默認情況下,成員將被假定為private。
構(gòu)造函數(shù)和析構(gòu)函數(shù) 類的構(gòu)造函數(shù)是在創(chuàng)建類的新對象時調(diào)用類中的特殊功能。析構(gòu)函數(shù)也是一個特殊的功能,當創(chuàng)建的對象被刪除時調(diào)用。
this指針 每個對象都有一個特殊的指針this,它指向的對象本身。
指針指向類 一個指針,指向類完成完全相同的方式指向一個結(jié)構(gòu)。其實一個類實際上只是一個帶有功能結(jié)構(gòu)。
類的靜態(tài)成員 這兩個數(shù)據(jù)成員和類的成員函數(shù)可以被聲明為靜態(tài)。