21xrx.com
2024-09-17 04:12:29 Tuesday
登录
文章检索 我的文章 写文章
C++实现继承两个类的方法
2023-07-08 06:29:04 深夜i     --     --
C++ 实现 继承 方法

C++是一种强大的编程语言,支持多种编程方法和技术。其中,继承是一种重要的面向对象编程技术,可以通过继承一个类的属性和方法来扩展另一个类。在C++中,可以通过两种方式实现类的继承:公有继承和私有继承。

公有继承是指子类继承父类的公有属性和方法,私有继承是指子类继承父类的私有属性和方法。在本文中,我们将介绍两种方法来实现继承两个类。

方法一:使用公有继承

公有继承是C++中最常用的继承方式,它允许子类继承父类的公有属性和方法。下面是一个使用公有继承的例子:


class Shape {

public:

  virtual double area() = 0;

};

class Rectangle : public Shape {

private:

  double width;

  double height;

public:

  Rectangle(double w, double h)

    width = w;

    height = h;

  

  double area() {

    return (width * height);

  }

};

class Triangle : public Shape {

private:

  double base;

  double height;

public:

  Triangle(double b, double h)

    base = b;

    height = h;

  

  double area() {

    return (base * height * 0.5);

  }

};

在上面的代码中,我们定义了三个类:Shape、Rectangle和Triangle。Shape是抽象类,它定义了一个纯虚函数area(),用于计算形状的面积。Rectangle和Triangle类都通过公有继承继承了Shape类,并实现了自己的area()函数。

这样做的好处是,我们可以将不同的形状定义为不同的类,并且每个类都有自己的计算面积的方法。同时,我们还可以利用多态的特性,将这些类的对象存储在一个Shape类型的数组中,并对它们进行统一的操作。

方法二:使用私有继承

私有继承是一种比较少用的继承方式,它通常在需要实现“has-a”关系时使用。下面是一个使用私有继承的例子:


class Person {

protected:

  string name;

  int age;

public:

  Person(string n, int a)

    name = n;

    age = a;

  

  void display()

    cout << "Name: " << name << endl;

    cout << "Age: " << age << endl;

  

};

class Employee {

private:

  string id;

public:

  Employee(string i)

    id = i;

  

  void display()

    cout << "ID: " << id << endl;

  

};

class Manager : private Person, private Employee {

public:

  Manager(string n, int a, string i) : Person(n, a), Employee(i) {}

  void display() {

    Person::display();

    Employee::display();

  }

};

在上面的代码中,我们定义了三个类:Person、Employee和Manager。Person和Employee都是基类,而Manager是派生类。

在Manager类中,我们使用了私有继承,这意味着Manager类只能访问Person和Employee类中的私有属性和方法,而不能直接访问它们的公有属性和方法。这样设计的好处是,我们可以将Manager类理解为同时拥有一个人和一个员工的角色。而且,由于Person和Employee类都有一个display()函数,我们在Manager类中需要使用作用域解析运算符“::”来指定要调用的函数的来源。

总结

本文介绍了两种实现继承两个类的方法:公有继承和私有继承。公有继承是一种常用的继承方式,它允许子类继承父类的公有属性和方法。私有继承则用于实现“has-a”关系,让一个类拥有另一个类的功能和属性。在使用继承时,需要注意避免过度使用,以免导致代码混乱和维护困难。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复