C++:类的继承

目录

 

总结

语法

继承类型

实例


总结

1、多继承:一个子类可以有多个父类,继承了多个父类的特性;

2、继承类型有public、protected和private三种,继承时如果未使用访问修饰符,则默认为private;

3、一个派生类继承了所有的基类方法,但下列情况除外:

  •     基类的构造函数、析构函数和拷贝构造函数。
  •     基类的重载运算符。
  •     类的友元函数。

语法

class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};

其中,访问修饰符继承方式是 public、protected 或 private 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔

继承类型

采用不同的继承方式,基类成员在派生类中访问修饰符的变化:

表1. 基类成员在派生类中访问限制的变化
基类成员的访问修饰符                             继承方式
public protected private
public public protected private
protected protected protected private
private 不可访问 不可访问 不可访问

具体:

  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。
  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。
  • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。

实例

#include 
using namespace std;
// 基类 Shape
class Shape 
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
   protected:
      int width;
      int height;
};
 
// 基类 PaintCost
class PaintCost 
{
   public:
      int getCost(int area)
      {
         return area * 70;
      }
};
 
// 派生类
class Rectangle: public Shape, public PaintCost
{
   public:
      int getArea()
      { 
         return (width * height); 
      }
};
 
int main(void)
{
   Rectangle Rect;
   int area;
 
   Rect.setWidth(5);
   Rect.setHeight(7);
 
   area = Rect.getArea();
   
   // 输出对象的面积
   cout << "Total area: " << Rect.getArea() << endl;
 
   // 输出总花费
   cout << "Total paint cost: $" << Rect.getCost(area) << endl;
 
   return 0;
}

输出:

Total area: 35
Total paint cost: $2450

参考资料:

https://www.runoob.com/cplusplus/cpp-inheritance.html 

你可能感兴趣的:(C++,#,面向对象)