本文共 3151 字,大约阅读时间需要 10 分钟。
C++面向对象---继承
继承的定义
继承是C++语言中的一种核心概念,它让我们可以基于已有的类或结构创建新类,继承其属性和方法。在这种继承关系中,原有的类称为基类(Base Class),新创建的类称为派生类(Derived Class)。通过继承,我们可以封装代码重复,提高代码复用性和可维护性。在实际代码中,继承有两种常见类型:一对一继承和一对多继承。虽然一对多和多对一也是可能的,但最常见的是一对一继承。一对一继承
一对一继承是指一个基类只能有一个派生类。这个概念类似于现实生活中的父子关系,一个父亲只能有一个儿子,但一个儿子有一个父亲。在C++中,一对一继承通过向基类的继承声明(using :声明)来实现。例如,人具有多个属性和方法,如姓名、年龄、身高和体重,以及一个方法来介绍自己。例如:
#includeusing namespace std;class People {public: string name; double height; double weight; string age;public: void introduce() { cout << "你好我叫 "; cout << this->name; cout << "!人身信息:身高" << this->height << "cm,体重" << this->weight << "kg,年龄" << this->age << endl; }};class Teacher : public People {public: string profession;};
完整代码:
#includeusing namespace std;class People {public: string name; double height; double weight; string age;public: void introduce() { cout << "你好我叫 " << name << "!\n身高" << height << "cm,体重" << weight << "kg,年龄" << age << endl; }};class Teacher : public People {public: string profession;};int main() { Teacher Lisi; Lisi.age = 18; Lsi.height = 170.5; Lsi.name = "李四"; Lsi.profession = "英语老师"; Lsi.weight = 50; Lsi.introduce(); return 0;}
这个例子中的People
类是基类,Teacher
类是派生类。派生类继承了基类的所有公有属性和方法,并在此基础上新增了独特的属性(如profession
)。
在实际编码中,基类和派生类的访问级别(public、protected、private)会影响继承和访问的方式:
operator()
)间接访问保护的属性和方法,但不能直接访问。一对多继承
一对多继承是指一个基类可以有多个派生类。在现实中,这相当于一个父亲可以有多个儿子。在C++中,我们可以通过将基类声明为多个不同的派生类来实现一对多继承。例如:
#includeusing namespace std;class People {public: string name; double height; double weight; string age;public: void introduce() { cout << "你好我叫 " << name << "!\n身高" << height << "cm,体重" << weight << "kg,年龄" << age << endl; }};class Teacher : public People {public: string profession;};class Doctor : public People {public: string profession;};class Driver : public People {public: string profession;};int main() { // 多个对象: Teacher Lisi; Doctor Wang; Driver Zhang; // 具体属性和逻辑可根据需要扩展 // 这里仅示意 Lisi.name = "李四"; Wang.name = "王五"; Zhang.name = "张六"; Lisi.introduce(); Wang.introduce(); Zhang.introduce(); return 0;}
多对一继承
多对一继承是更为复杂的一种继承方式。在这种关系中,一个派生类可以继承多个基类的属性和方法。例如,在现实生活中,一个儿子可以有多个父亲,每个父亲传授不同的技能。这种多对一继承在C++中通过使用多继承(multi-inheritance)实现。例如:
#includeusing namespace std;class Driver {public: void driving() { cout << "嘀嘀嘀!司机在开车\n"; }};class Doctor {public: void treatment() { cout << "请问哪里不舒服?医生在治疗\n"; }};class Teacher {public: void teaching() { cout << "学而时习之,不亦乐乎!老师在教育\n"; }};class Youngman : public Doctor, public Teacher, public Driver {public: string name; int age; double height; double weight;};int main() { Youngman Lisi; Lisi.driving(); // 开车 Lisi.teaching(); // 教课 Lisi.treatment(); // 治疗 return 0;}
注意到Youngman
类同时继承了Driver
、Teacher
和Doctor
三个类的属性和方法。这种双重继承(多继承)的实现让一个对象可以同时具有多个行为或属性。
转载地址:http://zbhiz.baihongyu.com/