目录

D编程 - 类和对象(Classes & Objects)

类是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类和对象相关的有趣概念,我们将在下面列出的各个小节中讨论 -

Sr.No. 概念与描述
1 类成员函数

类的成员函数是一个函数,它在类定义中的定义或原型与任何其他变量一样。

2 Class access modifiers

类成员可以定义为public,private或protected。 默认情况下,成员将被视为私有。

3 构造函数和析构函数

类构造函数是类中的特殊函数,在创建类的新对象时调用该类。 析构函数也是一个特殊函数,在删除创建的对象时调用。

4 D中的这个指针

每个对象都有一个特殊的指针,指向对象本身。

5 指向D类的指针

指向类的指针与指向结构的指针完全相同。 实际上,一个类实际上只是一个包含函数的结构。

6 一个类的静态成员

类的数据成员和函数成员都可以声明为static。

↑回到顶部↑
WIKI教程 @2018