63.介绍面向对象的三大特性,并且举例说明

发布时间 2023-07-11 15:15:30作者: CodeMagicianT

63.介绍面向对象的三大特性,并且举例说明

三大特性:继承、封装和多态

1.封装

C++中的封装是指将属性和方法包装在一个类中,并通过访问控制符来限制外部对类的访问。封装可以提高代码的可维护性和安全性,同时也可以实现多态性。

在C++中,封装可以通过以下方式实现:

1.使用访问控制符:C++中有public、private和protected三种访问控制符,分别表示公共、私有和受保护的成员。通过设置访问控制符,可以限制外部对类的访问。

2.定义成员函数:将数据和方法封装在一个类中,通过定义成员函数来实现对数据的访问和操作。

3.使用构造函数和析构函数:构造函数用于初始化对象的数据成员,析构函数用于释放对象占用的内存空间。通过定义构造函数和析构函数,可以确保对象在使用完毕后能够正确地释放资源。

4.使用友元函数:友元函数是指在类外定义的可以访问类内部成员的函数。通过定义友元函数,可以实现对类内部成员的访问和操作。

总之,C++中的封装是一个比较复杂的概念,需要结合具体的编程场景进行理解和应用。

2.继承

C++最重要的特征是代码重用,通过继承机制可以利用已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。

一个B类继承于A类,或称从类A派生类B。这样的话,类A成为基类(父类), 类B成为派生类(子类)。

派生类中的成员,包含两大部分:

■一类是从基类继承过来的,一类是自己增加的成员。

■从基类继承过过来的表现其共性,而新增的成员体现了其个性。

让某种类型对象获得另一个类型对象的属性和方法。

它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

常见的继承有三种方式:

1.实现继承:指使用基类的属性和方法而无需额外编码的能力

2.接口继承:指仅使用属性和方法的名称、但是子类必须提供实现的能力

3.可视继承:指子窗体(类)使用基窗体(类)的外观和实现代码的能力(C++里好像不怎么用)

例如,将人定义为一个抽象类,拥有姓名、性别、年龄等公共属性,吃饭、睡觉、走路等公共方法,在定义一个具体的人时,就可以继承这个抽象类,既保留了公共属性和方法,也可以在此基础上扩展跳舞、唱歌等特有方法

3.多态

同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载实现编译时多态,虚函数实现运行时多态)

多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单一句话:允许将子类类型的指针赋值给父类类型的指针

实现多态有二种方式:覆盖(override),重载(overload)。

覆盖:是指子类重新定义父类的虚函数的做法。

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。例如:基类是一个抽象对象---人,那教师、运动员也是人,而使用这个抽象对象既可以表示教师、也可以表示运动员。