C++中继承(inheritance)详解及其作用介绍
什么是继承?
继承是一种面向对象编程中的重要概念,指的是类(子类)拥有父类的属性和方法,在父类的基础上进行扩展或重写。继承关系中,父类也称为基类或超类,子类也称为派生类或衍生类。继承关系体现了面向对象编程中的一种复用机制,其中子类可以重用父类的代码,而且不需要重新写入相同的代码。
在C++中,继承关系可以通过关键字inherit
来实现。例如,下面的代码实现了一个基类Animal和其两个子类Cat和Dog。
// 基类Animal
class Animal {
protected:
int age;
public:
Animal(int a = 0) { age = a; }
void getAge() { cout << "Age is " << age << endl; }
};
// 子类Cat,继承于基类Animal
class Cat : public Animal {
public:
void meow() { cout << "Meow!" << endl; }
};
// 子类Dog,继承于基类Animal
class Dog : public Animal {
public:
void bark() { cout << "Woof!" << endl; }
};
继承的作用
通过继承,可以在不需要重复编写代码的情况下,扩展类的功能。继承可以实现以下几个目的:
复用已有代码
通过继承,子类可以复用父类的属性和方法,从而避免在子类中重复编写相同的代码。例如,在上述代码中,Cat
类和Dog
类都继承于Animal
类,可以直接使用Animal
类中的age
属性和getAge()
方法,而不需要在每个子类中再次定义。
扩展类的功能
通过继承,可以在父类的基础上扩展类的功能。例如,在上述代码中,Cat
类可以在Animal
类的基础上添加猫叫的方法meow()
,Dog
类可以在Animal
类的基础上添加狗叫的方法bark()
。
改进类的实现
通过继承,可以改进类的实现。例如,假设在上述代码中需要定义多个动物类(比如,猫、狗、鱼等),那么可以先定义一个基类Animal
,再在Animal
类的基础上定义不同的子类,从而使得代码具有良好的可维护性。
继承的示例
单继承
下面是一个单继承的示例。假设有一个汽车类Car
,它有如下公有方法和属性:
class Car {
public:
void drive() { cout << "Driving!" << endl; }
void stop() { cout << "Stopping!" << endl; }
int speed;
};
现在,需要定义一个跑车类SportsCar
,它继承自Car
类,并添加独有的方法和属性。
class SportsCar : public Car {
public:
void drift() { cout << "Drifting!" << endl; }
int handling;
};
在这个例子中,SportsCar
继承自Car
类,并增加了drift()
方法和handling
属性。由于SportsCar
继承了Car
类,因此SportsCar
对象可以直接使用drive()
、 stop()
等方法,而且SportsCar
对象还有它自己的方法和属性。
多重继承
下面是一个多重继承的示例。假设有一个基类Person
,两个派生类Teacher
和Student
,其中Teacher
和Student
都继承自Person
类,并拥有各自的属性和方法。现在,需要定义一个助教类TA
,它既继承自Teacher
类,也继承自Student
类。
class Person {
public:
string name;
int age;
};
class Teacher : public Person {
public:
string subject;
void teach() { cout << "Teaching!" << endl; }
};
class Student : public Person {
public:
int grade;
void study() { cout << "Studying!" << endl; }
};
class TA : public Teacher, public Student {
public:
string course;
void assist() { cout << "Assisting!" << endl; }
};
在这个例子中,TA
类既继承自Teacher
类,也继承自Student
类,并添加了它自己的方法和属性。由于TA
类同时继承了Teacher
类和Student
类,因此TA
对象可以直接使用teacherName
、subject
、grade
、 name
、age
等属性和方法。
总结
继承是面向对象编程中的重要概念,它可以实现代码的复用、类的扩展和实现的改进。C++中通过inherit
来实现继承关系,子类可以直接使用父类的属性和方法,在此基础上进行扩展或重写。在使用继承时,需要注意继承的权限(public
、protected
、private
等),以及多重继承的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中继承(inheritance)详解及其作用介绍 - Python技术站