多态及其实现

多态及其实现

1.什么是多态?

多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

2.为什么需要多态?

作为面向对象的三大特性之一,多态也有代码重用的功能,还有解决项目中紧耦合的问题,提高程序的可扩展性·。具有以下性质:

可替换性:多态对已存在的代码具有可替换性。

可扩充性:增加新的子类并不影响已存在类的多态性、继承性以及其他特性的运行和操作。

接口性:多态是父类(超类)通过方法签名,向子类提供了共同的接口,子类可以通过覆写完善或者覆盖这个接口。

灵活性:在应用中体现了灵活多样的操作,提高了使用效率。

参数统一性

3.多态的实现方式

实现多态的主要手段有三种:

一,虚方法 Virtual

虚方法可以给父类中的方法一个实现,虚方法必须有实现部分,哪怕是空实现。

关于虚方法需要注意的几点:
1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2.虚方法在父类中必须有实现,哪怕是空实现。
3.虚方法子类可以重写(override),也可以不重写。

二、抽象类实现多态

abstract什么是抽象类?通俗的说就是,光说不做的类,就是不能被实例化.

首先,抽象类不能被实例化,抽象类中可以有普通成员。

抽象类存在的意义:

1.抽象类不能被实例化,只能被其他类继承

2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。)

3.抽象类就是为了重写→多态(代码重用)。

4.抽象类中可以有实例成员也可以有抽象成员。

三、接口实现多态

什么是接口?
接口就是一种规范,协议(*),约定好遵守某种规范就可以写通用的代码。
定义了一组具有各种功能的方法。可以把法律理解为一个接口任何人想要在中国生活,必须遵守中国的法律,也就是说任何人要想在中国,就必须实现法律这个接口。

(实现接口的意思就是遵守了接口中的规范。)皮包公司(接口)。

你给我活我有能力去开发网站,但是接到活以后我公司没人会做。于是我把他交给有能力去做的人(实现功能的类)使用接口来实现对扩展开放,对修改关闭接口定义一种能力。

子类继承抽象类,实现接口

接口中的成员必须不能有实现

接口中的成员不能有访问修饰符,隐式公开

接口中可以有属性、方法、索引器等,但不能有字段

接口中的所有程序必须被子类中全部实现

虚方法和抽象方法的区别。

虚方法必须有实现,抽象方法必须没有实现抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中抽象方法必须在子类中重写,虚方法可以被重写

原文地址:https://www.cnblogs.com/zzn763754251/p/12494759.html