📅  最后修改于: 2023-12-03 14:39:39.728000             🧑  作者: Mango
继承是C++中一个重要的概念,它允许一个类(称为子类或派生类)去继承另一个类(称为父类或基类)的属性和方法。这个示例将介绍C++中继承的基本用法和一些示例代码。
class Parent {
public:
// 父类的属性和方法
};
class Child : public Parent {
public:
// 子类的属性和方法
};
上述示例中,Child
类通过关键字public
继承了Parent
类。这样,Child
类将拥有Parent
类的所有公有属性和方法。
考虑一个简单的示例,有一个基类Shape
表示几何形状,它具有一个公有方法area()
用于计算形状的面积。我们可以创建一个派生类Circle
用于表示圆形,在派生类中可以添加额外的属性和方法。
class Shape {
public:
float area() {
return 0;
}
};
class Circle : public Shape {
private:
float radius;
public:
Circle(float r) {
radius = r;
}
float area() {
return 3.14 * radius * radius;
}
};
在上述示例中,Circle
类继承了Shape
类,它重写了area()
方法,计算并返回圆形的面积。通过继承和重写,我们可以更好地复用代码,并根据需求进行扩展。
C++还支持多继承,即一个子类可以同时继承多个父类的属性和方法。考虑以下示例,有两个基类Animal
和Swimmer
,一个派生类Dolphin
。
class Animal {
public:
void eat() {
// ...
}
};
class Swimmer {
public:
void swim() {
// ...
}
};
class Dolphin : public Animal, public Swimmer {
public:
void doTricks() {
// ...
}
};
在上述示例中,Dolphin
类继承了Animal
和Swimmer
类,因此它拥有eat()
方法和swim()
方法。此外,Dolphin
类还可以添加新的方法,比如doTricks()
。通过多继承,我们可以在一个类中获得多个不同父类的属性和方法。
在C++中,继承可以使用三种访问修饰符:public
,protected
和private
。默认情况下,继承关系是私有的。下面是一个示例:
class Parent {
public:
int publicVar;
protected:
int protectedVar;
private:
int privateVar;
};
class Child : public Parent {
public:
void accessParent() {
publicVar = 1; // 正确,可以访问公有属性
protectedVar = 2; // 正确,可以访问受保护属性
privateVar = 3; // 错误,不能访问私有属性
}
};
在上述示例中,子类Child
可以访问父类Parent
的公有和受保护属性,但不能访问私有属性。继承中的访问修饰符决定了外部如何访问继承来的属性和方法。
继承是C++中非常强大的特性之一,通过合理使用继承,我们可以实现代码的复用和扩展。在实际开发中,要注意适度使用继承,避免过度继承导致代码复杂和不可维护。