您当前的位置: 首页 > 

风间琉璃•

暂无认证

  • 1浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

面向对象的三大特征

风间琉璃• 发布时间:2022-10-09 12:34:01 ,浏览量:1

目录

一、封装

二、继承(inherite)

1.继承定义

2.继承中的构造函数和析构函数

3.继承中的拷贝构造

 4.名字隐藏

5.多重继承

6.菱形虚拟继承(多继承的优化)

三、多态 

1.虚函数

 2.虚函数的重写

 3.虚析构

4.纯虚函数和抽象类

5.几种重名机制的处理

四、C++中类和实现的分离

在这里插入图片描述

在这里插入图片描述

一、封装

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。用类将对象的属性和方法结合在一块,让对象更加完善,通过访问权限(private,public),选择性的将其接口提供给外部的用户使用。 

该隐藏的数据私有化,该公开的数据设计为公有的接口。这样做的好处是为了更好地分工合作,有助于数据的安全性和使用的方便性,也防止不必要的扩展。

二、继承(inherite) 1.继承定义

继承(inheritance)机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。

继承实现了代码的复用,复用的实现是在已有代码的基础上进行扩展。继承发生在类与类之间。只有符合A is a B的情形,A与B就可以存在继承关系。

语法实现

class A{...};
class B:继承方式 A{/*新增的内容*/};  //B类中会包含A类中的所有内容

 在继承当中,父类也称为基类,子类是由基类派生而来的,所以子类又称为派生类。

继承方式包括:

公有继承 ----- class B:public A{...};

保护继承 ----- class B:protected A{...};

私有继承 ----- class B:private A{...};

 注意:如果不写继承方式,默认是私有继承。

继承方式影响的是父类成员在子类中的访问权限。

①公有继承

父类的公有成员在子类中仍然是公有的

父类中的保护成员在子类中仍然是保护的

父类的私有成员在子类中是隐藏的(不可访问的)

②保护继承

父类的公有成员在子类中变为保护的

父类中的保护成员在子类中仍然是保护的

父类的私有成员在子类中是隐藏的(不可访问)

③私有继承

父类的公有成员在子类中变为私有的

父类中的保护成员在子类中变为私有的

父类的私有成员在子类中是隐藏的(不可访问的)

在基类当中的访问方式为public或protected的成员,在派生类当中的访问方式变为:Min(成员在基类的访问方式,继承方式)。注意:父类成员在子类中的访问权限只会收缩不会扩大,在子类中的访问全不会超过继承方式。

在基类当中的访问方式为private的成员,在派生类当中都是隐藏的(不可访问的)。基类的私有成员虽然被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。

因此,基类的private成员在派生类中是不能被访问的,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就需要定义为protected,由此可以看出,protected限定符是因继承才出现的。

所谓继承方式就是父类成员能够提供给子类的最大访问权限,实际权限小于等于继承方式,私有数据在子类中总是隐藏的(隐藏不代表不存在)。

注意: 在实际运用中一般使用的都是public继承,几乎很少使用protected和private继承,也不提倡使用protected和private继承,因为使用protected和private继承下来的成员都只能在派生类的类里面使用,实际中扩展维护性不强。

2.继承中的构造函数和析构函数

构造子类时,会自动调用父类的构造函数;析构子类时,自动调用父类的析构函数。调用构造函数和析构函数的顺序是相反的,先构造父类再构造子类,先析构子类再析构父类。

继承父类的数据由父类构造和析构,而子类新增的数据由子类构造析构。

子类默认调用时父类的无参构造函数,如果需要给父类构造函数传参,可以通过子类构造函数的初始化参数列表传参。在子类构造函数形参列表之后,函数体之前使用":父类(参数1,参数2)"向父类传递参数。


class A{
public:
    A(){cout            
关注
打赏
1665385461
查看更多评论
0.0375s