D语言 - 类和对象

D语言 - 类和对象 首页 / D语言入门教程 / D语言 - 类和对象

类(Class)类可以看成是创建Java 对象的模板,中的数据和函数称为该类的成员。

类定义

类定义以关键字 class 开头,后跟类名,类定义之后必须是分号或声明列表,如,我们使用关键字 class 定义Box数据类型,如下所示-

class Box { 
   public: 
      double length;   //box的长度
      double breadth;  //box的宽度
      double height;   //box的高度
}

关键字 public 确定其后的类的成员的访问属性,可以从类外部在类对象范围内的任何位置访问公共成员。您还可以将类的成员指定为私有的private 或受保护protected的修饰符 ,我们将在小节中讨论。

定义对象

对象是从类创建的实例,以下语句声明Box类的两个实例对象 -

Box Box1;          //声明类型为 Box 的 Box1
Box Box2;          //声明类型为 Box 的 Box2

对象Box1和Box2都有自己的数据成员。

访问数据

可以使用直接成员访问运算符(.)访问类对象的公共数据成员,让我们尝试以下示例以使事情变得清晰起来-

import std.stdio;

class Box { 
   public: 
      double length;   //box的长度
      double breadth;  //box的宽度
      double height;   //box的高度
}
  
void main() { 
   Box box1=new Box();    //声明类型为 Box 的 Box1
   Box box2=new Box();    //声明类型为 Box 的 Box2
   double volume=0.0;     //在这里存储box的体积
   
   //box1赋值
   box1.height=5.0; 
   box1.length=6.0; 
   box1.breadth=7.0; 
   
   //box2赋值
   box2.height=10.0; 
   box2.length=12.0; 
   box2.breadth=13.0;
   
   //box1的体积 
   volume=box1.height * box1.length * box1.breadth; 
   writeln("Volume of Box1 : ",volume);
   
   //box2的体积
   volume=box2.height * box2.length * box2.breadth; 
   writeln("Volume of Box2 : ", volume); 
} 

编译并执行上述代码后,将产生以下输出-

Volume of Box1 : 210 
Volume of Box2 : 1560 

重要的是要注意,不能使用直接成员访问运算符(.)直接访问私有成员和受保护成员。

类和对象

相关的其他有趣概念,我们将在下面列出的各个小节中讨论它们-

Sr.No.Concept & 描述
1 Class member functions

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

2 Class access modifiers

类成员可以定义为公共public,私有private或受保护protected成员,默认情况下,成员将被假定为私有private成员。

3 Constructor & destructor

类构造函数是类中的一个特殊函数,当创建该类的新对象时会调用该构造函数。

4 The this pointer in D

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

5 Pointer to D classes

指向类的指针的操作与指向结构的指针的方法完全相同。实际上,类实际上只是其中包含函数的结构。

6 Static members of a class

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

左耳听风 -〔陈皓〕

深入浅出区块链 -〔陈浩〕

NLP实战高手课 -〔王然〕

Flink核心技术与实战 -〔张利兵〕

PyTorch深度学习实战 -〔方远〕

快手 · 音视频技术入门课 -〔刘歧〕

云计算的必修小课 -〔吕蕴偲〕

Vue 3 企业级项目实战课 -〔杨文坚〕

AI 应用实战课 -〔黄佳〕

好记忆不如烂笔头。留下您的足迹吧 :)