📜  D编程-类和对象(1)

📅  最后修改于: 2023-12-03 15:00:33.777000             🧑  作者: Mango

D编程-类和对象

在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语言中面向对象编程的两个基本概念,掌握好它们对于编写大型项目具有重要意义。