📜  C ++ |继承|问题12(1)

📅  最后修改于: 2023-12-03 14:39:38.696000             🧑  作者: Mango

C++ | 继承 | 问题12

简介

继承是面向对象编程中非常重要的一个概念,即子类可以继承父类的属性和方法。在 C++ 中,继承分为三种类型:公有继承、私有继承和保护继承。三种继承方式的区别在于子类如何继承父类的成员、访问权限等。

代码示例
// 父类 Animal
class Animal {
public:
  void eat() {
    cout << "Animal eat" << endl;
  }
  void run() {
    cout << "Animal run" << endl;
  }
  int age;
};

// 子类 Cat 继承自 Animal
class Cat : public Animal {
public:
  void climb() {
    cout << "Cat climb" << endl;
  }
  int weight;
};

// 创建子类对象实例并调用方法
Cat cat;
cat.run(); // 继承自父类 Animal 的方法
cat.eat(); // 继承自父类 Animal 的方法
cat.climb(); // 子类 Cat 自己的方法

// 访问继承自父类的属性
cat.age = 2; // 继承自父类 Animal 的属性

// 访问子类自己的属性
cat.weight = 3; // 子类 Cat 自己的属性

上面的代码示例中,父类 Animal 声明了 eat()run() 两个方法以及一个 age 属性,子类 Cat 继承了 Animal 类并增加了一个 climb() 方法和一个 weight 属性。在代码示例中,我们创建了子类 Cat 的对象实例 cat,并通过 cat.run()cat.eat()cat.climb() 分别调用了继承自父类和子类自己的方法。同时,我们也访问了继承自父类的 age 属性和子类自己的 weight 属性。

继承类型

在 C++ 中,继承类型可以分为公有继承、私有继承和保护继承三种。

公有继承

公有继承将父类成员的访问权限保持不变,子类可以访问父类公有成员和保护成员,但不能访问父类私有成员。

// 公有继承
class Child: public Parent {
};
私有继承

私有继承将父类公有和保护成员都变成了私有成员,子类不能访问任何父类成员。

// 私有继承
class Child: private Parent {
};
保护继承

保护继承将父类的公有成员变成了子类的保护成员,父类的保护成员和私有成员都变成了子类的私有成员。

// 保护继承
class Child: protected Parent {
};
总结

继承是 C++ 中非常重要的面向对象编程概念,通过继承可以将已有的类进行扩展和重用。在 C++ 中,继承类型包括公有继承、私有继承和保护继承,以及三者之间的区别。开发者需要根据具体需求来选择不同的继承类型,以便实现最佳的面向对象设计。