1 多态:多态就是同一操作(方法)作用于不同的对象时,可以有不同的解释,产生不同的执行结果
C++ 多态意味:在父类写一个虚方法或抽象方法,子类去重写父类的方法,在调用的时候系统会根据对
象运行时的类型决定调用哪个方法【一个接口,多种方法】。
2 多态的绑定:
- 编译时的多态性:通过重载实现
- 运行时的多态性:通过虚函数实现
3 实现多态的方法:
虚方法 概念:虚方法有方法体,可以被重写,使用virtual来修饰。
父类中的虚方法并非必须被子类重写,在父类中可以给出虚方法的默认实现。如果子类不重写父类的虚方法则依然执行父类的默认实现。如果子类重写了父类的虚方法,则执行子类重写后的方法。
虚方法 的使用:在父类中使用virtual关键字定义虚方法,在子类中使用override关键字【重写】来重写父类中的虚方法。
虚方法和重载的区别:重载的方法都在同一个类中,
虚方法实现多态的方法散布在有继承关系的多个类中。
多态类:包含虚函数的类称为“多态类”。
抽象方法(abstract method,也可以成为纯虚函数):
abstract关键字:abstract关键字用来修饰抽象类和抽象方法。抽象类是指包括至少一个纯虚函数的类。
抽象类:
使用abstract关键字修饰的抽象类不能被实例化。
抽象类中可以有非抽象方法。
抽象类不能是密封的或者静态的。
抽象方法:
使用abstract关键字修饰的抽象方法是一个没有实现的方法,由子类重写抽象方法来实现。
抽象方法没有大括号,直接在小括号后以分号";"结尾。
含有抽象方法的类必须是抽象类。
抽象方法必须在其子类中实现,除非它的子类也是抽象类。
4 析构函数
一般下类的析构函数里面都是释放内存资源,而析构函数不被调用的话,就会造成内存泄漏。
所以,析构器都是虚方法是为了当一个基类的指针删除一个派生类的对象时,派生类的析构函数可以被正确调用。