C++面向对象的三大特征(四大特征)
三大特征:封装、继承、多态
四大特征:抽象、封装、继承、多态
一、类和对象
- 什么是类,什么是对象,类和对象的区别?
类是数据类型,是具有相同属性和服务的一组对象的集合。对一类对象的抽象就是类。
对象即观察研究对象,是类这种数据类型创建出的实例(相当于结构变量)。
类与对象的区别:
1、类是一个抽象的概念,类只是为所有的对象定义了抽象的属性和行为;对象是类的一个具体,是实体。
2、类是静态概念,本身不携带任何数据;对象是动态概念,每个对象都有自己独特的属性和行为,且它的属性可以随着行为而发生改变。
注意:C++中类和结构的区别只有成员函数和成员变量默认访问权限不同。
二、类的继承
1、一个子类可以同时继承多个父类,每个父类的继承方式可以相同也可以不同。
class 子类:继承方式 父类,...{}
2、继承的基本特点:
- 子类会继承父类的所有成员,但不能访问父类中的私有成员
- 子类的指针或引用可以隐式转换成父类的指针或引用
- 子类会隐藏父类的同名成员
1、可通过域限定符进行访问
2、可以使用父类的指针或引用来指向子类对象
3、继承方式影响访问控制
①访问控制限定符
注意:private子类需要调用父类的成员函数来访问
友元与内部的区别,友元需要类的指针或引用
- 总结:
public成员在类内、子类中、外部都可以随意访问
private成员只能在类中才能访问,外部不能访问
protected成员在类内和子类中都可以访问,即只能被类内或子类访问,但不能被子类的对象访问(属于外部)
②继承方式
- 总结:
C++中的继承方式有public、private、protected三种(它们直接影响到子类的成员及其对象对父类成员访问的规则)
public(公有继承):父类中各成员属性不变,且父类中private成员被隐藏;子类成员只能访问父类中的public、protected成员;子类对象只能访问父类的public成员
private(私有继承):父类中各成员属性均变为private,且父类中private成员被隐藏;子类成员只能访问父类中的public、protected成员;子类对象不能访问父类的任何成员
protected(保护继承):父类中各成员属