目录
访问权限
C++通过 public、protected、private三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。
在类的内部(定义类的代码内部),无论成员被表明为public、protected还是private,都是可以互相访问的,没有访问权限的限制。
在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象访问成员,并且通过对象只能访问public属性的成员,不能访问protected、private属性的成员。
无论是公有继承、保护继承和私有继承,私有成员不能被“派生类”访问,基类中的公有和保护成员能被“派生类”访问。
对于公有继承,只有基类中的公有成员能被“派生类对象”访问,保护和私有成员不能被“派生类对象”访问。对于私有和保护继承,基类中的所有成员不能被“派生类对象”访问。
继承
定义:让某种类型对象获得另一个类型对象的属性和方法。
功能:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
常见的继承有三种方式:
- 实现继承:指使用基类的属性和方法而无需额外编码的能力。 —— 虚函数
- 接口继承:指仅使用属性和方法的名称,但是子类必须提供实现的能力。 —— 纯虚函数
- 可视继承:指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 —— 普通函数
例如:将人定义为一个抽象类,拥有姓名、性别、年龄等公共属性,吃饭、睡觉等公共方法,在定义一个具体的人时,就可以继承这个抽象类,既保留了公共属性和方法,也可以在此基础上扩展跳舞、唱歌等特有方法。
封装
定义:数据和代码捆绑在一起,避免外界干扰和不确定性访问;
功能:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏,例如:将公共的数据或方法使用public修饰,而不希望被访问的数据或方法采用private修饰。
封装本质是一种管理方式,类就是封装的一种方法。
多态
定义:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载实现编译时多态,虚函数实现运行时多态)
功能:多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单一句话:允许将子类类型的指针赋值给父类类型的指针。
实现多态有两种方式:
- 覆盖(override):是指子类重新定义父类的虚函数的做法。
- 重载(overload):是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)
例如:基类是一个抽象对象——人,那学生、运动员也是人,而使用这个抽象对象既可以表示学生、也可以表示运动员。
总结访问修饰符
C++提供了三个访问修饰符:public、private和protected。这些修饰符决定了类中的成员对外部代码的可见性和访问权限。
public修饰符用于指定类中的成员可以被类的外部代码访问。公有成员可以被类外部的任何代码(包括类的实例)访问。
private修饰符用于指定类中的成员只能被类的内部代码访问。私有成员对外部代码是不可见的,只有类内部的成员函数可以访问私有成员。
protected修饰符用于指定类中的成员可以被类的派生类访问。受保护成员对外部代码是不可见的,但可以在派生类中被访问。