多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。
C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
作为面向对象的三大特性之一,多态也有代码重用的功能,还有解决项目中紧耦合的问题,提高程序的可扩展性·。具有以下性质:
可替换性:多态对已存在的代码具有可替换性。
可扩充性:增加新的子类并不影响已存在类的多态性、继承性以及其他特性的运行和操作。
接口性:多态是父类(超类)通过方法签名,向子类提供了共同的接口,子类可以通过覆写完善或者覆盖这个接口。
灵活性:在应用中体现了灵活多样的操作,提高了使用效率。
参数统一性
实现多态的主要手段有三种:
虚方法可以给父类中的方法一个实现,虚方法必须有实现部分,哪怕是空实现。
关于虚方法需要注意的几点:
1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2.虚方法在父类中必须有实现,哪怕是空实现。
3.虚方法子类可以重写(override),也可以不重写。
abstract什么是抽象类?通俗的说就是,光说不做的类,就是不能被实例化.
首先,抽象类不能被实例化,抽象类中可以有普通成员。
抽象类存在的意义:
1.抽象类不能被实例化,只能被其他类继承
2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。)
3.抽象类就是为了重写→多态(代码重用)。
4.抽象类中可以有实例成员也可以有抽象成员。
什么是接口?
接口就是一种规范,协议(*),约定好遵守某种规范就可以写通用的代码。
定义了一组具有各种功能的方法。可以把法律理解为一个接口任何人想要在中国生活,必须遵守中国的法律,也就是说任何人要想在中国,就必须实现法律这个接口。
(实现接口的意思就是遵守了接口中的规范。)皮包公司(接口)。
你给我活我有能力去开发网站,但是接到活以后我公司没人会做。于是我把他交给有能力去做的人(实现功能的类)使用接口来实现对扩展开放,对修改关闭接口定义一种能力。
子类继承抽象类,实现接口
接口中的成员必须不能有实现
接口中的成员不能有访问修饰符,隐式公开
接口中可以有属性、方法、索引器等,但不能有字段
接口中的所有程序必须被子类中全部实现
虚方法必须有实现,抽象方法必须没有实现抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中抽象方法必须在子类中重写,虚方法可以被重写
原文:https://www.cnblogs.com/zzn763754251/p/12494759.html