C++面向对象编程特性(封装、抽象、继承、多态)

        面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。

        首先,我们对面向对象编程的四个特性进行字面层次的解释。

抽象:根据多个对象,去观察他们的共同属性和行为,提取出来;

封装:把提取出来的共性整合在一起,得到一个整体,并且对外提供一些接口供我们外部调用;

继承:新的类从已有类那里得到已有的特性;

多态:同一个函数名,传入不同的参数,执行不同的函数体。

一、抽象:

        在面向对象的概念中,所有的对象都是通过来描绘的,但是反过来却不是这样:并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 。C++抽象类是为子类抽象一个基类,抽象类的主要作用是为子类提供相同的属性和方法,其他如果需要在子类中修改方法,需要将其声明为纯虚函数。

question:类和对象的区别是什么?

类:把属性和行为整合在一起描述一类事物的自定义的数据类型,c++中把这种数据类型称为类;

对象:类这个类型定义出来的变量叫做对象;

区别:类是对象的抽象;对象是类的具体实例

二、封装

封装的作用:

(1)在设计类的时候,属性和行为写在一起,表现事物;
(2)类在设计时,可以把属性和行为放在不同的权限下,加以控制;

访问权限有三种:

  1. public 公共权限(类内可以访问 类外可以访问)
  2. protected 保护权限(类内可以访问 类外不可以访问)
  3. private 私有权限(类内可以访问 类外不可以访问)

eg:设计一个圆类,求圆的周长

三、继承

        继承方式包括 public(公有的)、private(私有的)和 protected(受保护的),此项是可选的,如果不写,那么默认为 private。不同的继承方式会影响基类成员在派生类中的访问权限。

(1)public继承方式

基类中所有 public 成员在派生类中为 public 属性;
基类中所有 protected 成员在派生类中为 protected 属性;
基类中所有 private 成员在派生类中不能使用。
(2)protected继承方式

基类中的所有 public 成员在派生类中为 protected 属性;
基类中的所有 protected 成员在派生类中为 protected 属性;
基类中的所有 private 成员在派生类中不能使用。
(3)private继承方式

基类中的所有 public 成员在派生类中均为 private 属性;
基类中的所有 protected 成员在派生类中均为 private 属性;
基类中的所有 private 成员在派生类中不能使用。
 

使用继承:类A是类B的一种特殊版本的话,就可以采用继承;

如何继承:子类继承父类的所有(数据成员、成员函数),友元是不具有继承;

继承格式:class 子类名:继承方式 父类名{ };

四、多态

C++中的多态分为静态多态和动态多态两种,其中:

静态多态在编译阶段实现,其原理是由函数重载实现,通过不同的实参调用其相应的同名函数。

动态多态通过虚函数实现,在运行时根据调用函数。

实现多态的条件:

(1)必须有继承;

(2)父类中有虚函数,子类中有重写这个虚函数;

(3)通过父类的指针或者引用去调用这个虚函数的时候

--》虚函数的重写:irtual修饰的成员函数称为虚函数,派生类中的虚函数与基类中虚函数满足函数名、参数、返回值均相同,叫做重写。

  

写在文末:c++确实是挺抽象的,尤其是在这四个特性方面。博主也在努力学习,回顾过往,比比皆是遗憾,不如再拼一次,加油(博主目前在华清远见西安中心学习)~文章若有不当或错误之处,欢迎私信指正!!!

  

猜你喜欢

转载自blog.csdn.net/bx1091182836/article/details/127722218
今日推荐