📅  最后修改于: 2023-12-03 15:00:33.777000             🧑  作者: Mango
在D语言中,类和对象是面向对象编程的两个重要概念。类是一种自定义类型,对象是该类型的实例。类中包含了数据成员和成员函数,并且可以继承自其他类。
class Person {
private string name;
private int age;
public this(string n, int a) {
name = n;
age = a;
}
public string getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(string n) {
name = n;
}
public void setAge(int a) {
age = a;
}
}
上述代码定义了一个Person类,包含了两个私有的数据成员name和age,以及四个成员函数,分别是构造函数、返回name和age的getter函数,以及修改name和age的setter函数。
Person p1 = new Person("Tom", 20);
Person p2 = new Person("Jerry", 18);
上述代码创建了两个Person对象,分别是p1和p2。可以看到,在创建对象时,需要使用new关键字和对应的构造函数参数列表。
class Student : Person {
private int score;
public this(string n, int a, int s) {
super(n, a);
score = s;
}
public int getScore() {
return score;
}
public void setScore(int s) {
score = s;
}
}
上述代码定义了一个Student类,继承自Person类,并添加了一个私有的数据成员score和两个成员函数。
void printInfo(Person person) {
writeln("Name: ", person.getName());
writeln("Age: ", person.getAge());
}
Person p = new Person("Tom", 20);
Student s = new Student("Jerry", 18, 90);
printInfo(p); // Name: Tom Age: 20
printInfo(s); // Name: Jerry Age: 18
上述代码定义了一个printInfo函数,接受一个Person参数,并分别输出该对象的name和age。在主函数中,分别创建了一个Person对象p和一个Student对象s,并调用该函数进行输出。由于Student类继承自Person类,并添加了自己的成员函数,所以在调用printInfo函数时,也可以传入Student对象。这就是多态的一种表现形式。
总之,类和对象是D语言中面向对象编程的两个基本概念,掌握好它们对于编写大型项目具有重要意义。