21xrx.com
2024-12-27 20:52:22 Friday
登录
文章检索 我的文章 写文章
C++继承的两种方式
2023-06-28 10:31:31 深夜i     --     --
继承 C++ public private protected

C++是一种支持面向对象编程的语言,其中继承是面向对象编程中的一个重要概念。继承允许一个类继承另一个类的属性和方法,从而避免重复代码的编写和提高代码的复用性。在C++中,继承可以通过两种方式实现,即公有继承和私有继承。

1. 公有继承

公有继承是最常见的继承方式,它可以让子类继承基类的所有公有方法和属性,同时也可以访问基类的保护和私有属性。通过公有继承,子类可以像基类一样使用基类的方法和属性,并且可以在子类中添加额外的属性和方法。

下面是一个简单的示例代码,演示了公有继承的用法:


class Animal{

public:

  void eat()

    cout << "Animal is eating." << endl;

  

};

class Dog : public Animal{

public:

  void bark()

    cout << "Dog is barking." << endl;

  

};

int main(){

  Dog d;

  d.eat(); // 输出Animal is eating.

  d.bark(); // 输出Dog is barking.

  return 0;

}

在这个示例中,类`Animal`是基类,类`Dog`是子类,通过`public`关键字,子类`Dog`继承了基类`Animal`的`eat()`方法。此时,子类`Dog`就可以通过对象实例化的方式使用基类中的`eat()`方法,也可以继续添加其他自己的方法。

2. 私有继承

私有继承是一种比较特殊的继承方式,它可以让子类继承基类的所有方法和属性,但是所有继承的方法和属性都将变成私有的。这意味着子类不能直接访问基类中的公有和保护属性,只能通过基类中提供的方法来访问这些属性。

下面是一个使用私有继承的简单示例:


class Animal{

public:

  void eat()

    cout << "Animal is eating." << endl;

  

};

class Dog : private Animal{

public:

  void bark(){

    cout << "Dog is barking." << endl;

    eat(); // 通过基类提供的方法访问公有属性

  }

};

int main(){

  Dog d;

  d.bark(); // 输出Dog is barking. Animal is eating.

  return 0;

}

在这个示例中,类`Dog`私有继承了基类`Animal`的所有属性和方法,包括`eat()`方法。此时,在`Dog`类中,通过`public`关键字,重新定义了`bark()`方法,并在其中使用了基类提供的`eat()`方法来访问公有属性。这样,子类`Dog`就可以通过自己的方法,访问基类中的公有属性。

总结

继承是面向对象编程中很重要的一个概念,可以有效地提高代码的复用性和可读性。在C++中,继承可以通过公有继承和私有继承两种方式实现。公有继承可以让子类继承基类的公有和保护属性,并且可以添加自己的属性和方法;私有继承则将所有继承的属性和方法都变成私有的,只能通过基类提供的方法来访问这些属性和方法。我们需要根据具体需求选择不同的继承方式,以实现更好的代码效果。

  
  

评论区

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