C++继承和派生(初学)

继续学习C++,学习到继承和派生

定义:

类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。

派生与继承,是同一种意义两种称谓。(继承相当于“子承父业”,而派生相当于“父亲派生出了一个儿子”,两者的角度不同,本质一样)

下例就是一个继承:

//C++通过继承关系,实现了代码的可重用性

class Human                            //父类:体现的是共性
{ 
    public: 
        void eat(string food)
        {
            cout<<"i am eating "<<food<<endl;
        }
};
class Student : public Human   //子类:是在父类的基础上增加新的功能,体现的是个性
{
  public:
        void study(string course)
        {
            cout<<"i am learning "<<course<<endl;
        }
};

 

对于is-a

is-a是一种属于关系,如:狗属于一种动物,车属于一种交通工具(Dog is an Animal. Car is a Vehicle.)在面向对象中表现为一种继承关系。可以设计一个Animal类,Dog类作为 Animal类(基类)的派生类;设计一个Vehicle类,Car类作为Vehicle类(基类)的派生类。

has-a是一种包含、组合关系。如:车包含方向盘、轮胎、发动机(Car has steering-wheel,wheels,engine),但不能说方向盘/轮胎/发动机是一种车;正确的应该说车聚合(包含)了方向盘、轮胎、发动机。

因此,如果A是(is a)B,则B是A的基类,A是B的派生类。为继承关系。

如果A包含B,则B是A的组成部分。为聚合关系,可以由组成部分聚合成为一个类。

 语法

class  派生类名:[继承方式] 基类名    //[继承方式]这里有括号,说明是可以省略的,若写成 class  派生类名:[] 基类名
{                                                        //则表示  class  派生类名:[private] 基类名
   派生类成员声明;
};                                                       //注意分号

重新看下面例子

class Human
{
    public:
        void eat(string food)
        {
            cout<<"i am eating "<<food<<endl;
        }
};
class Student : public Human                    
//这里的public表示的是继承方式   若把public省略就是默认private
{
  public:                                                      //这里的public表示的是访问权限
        void study(string course)
        {
            cout<<"i am learning "<<course<<endl;
        }
};

继承方式

继承方式规定了如何访问基类继承的成员。继承方式有public,private,protected。继承方式不影响派生类的访问权限,影响了从基类继承来的成员的访问权限包括派生类内的访问权限和派生类对象。

分为三大类:

公有继承:基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类的私有成员。
私有继承:基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类的私有成员。

保护继承:基类的公有成员和保护成员在派生类中成了保护成员,其私有成员仍为基类的私有成员。

保护继承(protected)对于外界访问属性来说,等同于私有,但可以派生类中可见。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值