继承的概念

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/dxd_123456/article/details/78066877

1、在讲继承之前先将一些类之间的几种关系
1)包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。
2)一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。
3)机制称为“继承”。关系具有传递性,不具有对称性。
而我们今天着重要讲的就是继承。
2、继承简单介绍:
继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。
继承(英语:inheritance)是面向对象软件技术当中的一个概念,继承可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。
派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。

3、以下是两种典型的使用继承的场景:
1) 当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但会减少代码量,而且新类会拥有基类的所有功能。
2) 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,也可以使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也方便后续修改成员。
4、继承的语法:
Class 派生类:继承方式(访问权限)基类
{
派生类新增的声明
}
5、继承的一些性质:
1)子类拥有父类的所有成员变量和成员函数
2)子类可以拥有父类没有的方法和属性
3)子类就是一种特殊的父类
4)子类对象可以当作父类对象使用
下面用一个案例来简单阐述一下继承的概念:

#include <stdio.h>
#include <string.h>

class Animal
{
public:
    void setName(char *name)
    {
        strcpy(this->name, name);
    }

    void Sleep()
    {
        printf("%s睡觉了!\n", this->name);
    }

public:
    char name[20];
    int age;
};

class Panda : public Animal
{
public:
    void eatBanboo()
    {
        printf("%s啃竹子!\n", this->name);
    }
};

class Dog :public Animal
{
public:
    void catchHouse()
    {
        printf("%s看家!\n", this->name);
    }
};

int main()
{
    Panda p;
    p.setName("熊猫");
    p.Sleep();
    p.eatBanboo();

    Dog d;
    d.setName("狗");
    d.Sleep();
    d.catchHouse();

    return 0;
}

这个案例中,基类是动物类,它有姓名和年龄两个成员变量,和睡觉这个成员方法,很明显在它的派生类熊猫类和狗类中也同时也可以使用这两个变量和方法,这就是它们从基类中继承过来的,这样就不需要在所有的类中都定义同样的成员了,与此同时,两个派生类中又添加了新的成员方法,比如熊猫可以有自己的新方法“啃竹子”,和狗的“看家”。这个案例可以简单的阐述继承的概念,当然更多的关于继承地知识点还需要我们去学习。

猜你喜欢

转载自blog.csdn.net/dxd_123456/article/details/78066877