面向对象:类与对象 面向对象的特点 抽象、封装、继承、多态 继承与派生 提高了代码的可重用性,有利于软件开发和维护 ·派生过程:吸收父类成员、改造父类成员、添加新成员 ·构造函数,访问权限,屏蔽规侧,类型兼容规侧,虚继承 多态 函数重载、运算符重载、虚函数、模板 http://math.ecnu.edu.cn/~jypan 2
http://math.ecnu.edu.cn/~jypan 面向对象:类与对象 2 面向对象的特点 抽象、封装、继承、多态 继承与派生 ► 提高了代码的可重用性,有利于软件开发和维护 ► 派生过程:吸收父类成员、改造父类成员、添加新成员 ► 构造函数,访问权限,屏蔽规则,类型兼容规则,虚继承 多态 函数重载、运算符重载、虚函数、模板
多态(polymorphism) 多态是指同样的消息被不同类型的对象接收时会导致不同的 行为,即接口的多种不同的实现方式。比如调用具有相同函 数名的函数,但实现不同的功能。 ·消息:对类的成员函数的调用 ●不同行为:不同的实现(功能),即调用不同函数 多态的实现: 函数重载/运算符重载,虚函数/纯虚函数,模板 中多态性是面向对象程序设计的关键技术之一,若程序设计语言不支持多态性, 不能称为面向对象的语言。 http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 多态 (polymorphism) 多态 是指同样的消息被不同类型的对象接收时会导致不同的 行为,即接口的多种不同的实现方式。比如调用具有相同函 数名的函数,但实现不同的功能。 消息:对类的成员函数的调用 不同行为:不同的实现(功能),即调用不同函数 † 多态性是面向对象程序设计的关键技术之一,若程序设计语言不支持多态性, 不能称为面向对象的语言。 多态的实现: —— 函数重载/运算符重载,虚函数/纯虚函数,模板
华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 虚函数 纯虚函数 模板 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 虚函数 纯虚函数 3 模板
虚函数(Virtual) 为什么虚函数: 用派生类对象替代父类的对象后,只能发挥父类的功能。 比如父类有成员函数show,派生类也有show,则用派 生类对象替代父类对象后,只能发挥父类的show功能。 如果仍然要发挥派生类的show功能呢? 虚函数 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 虚函数 (Virtual) 为什么虚函数: 用派生类对象替代父类的对象后,只能发挥父类的功能。 比如父类有成员函数 show,派生类也有 show,则用派 生类对象替代父类对象后,只能发挥父类的 show 功能。 如果仍然要发挥派生类的 show 功能呢? 虚函数 1
虚函数举例 ex14_virtual_fun01.cpp class Person /1父类 { virtual void show()/虚函数 { cout <<"Name:"<<name <endl; cout <<"Age:"<age<<endl; 方 class Student public Person /1派生类 virtual void show()/虚函数 Person:show(); cout <<"Stuid:"<<stuid <endl; http://math.ecnu.edu.cn/-jypan 6
http://math.ecnu.edu.cn/~jypan 6 虚函数举例 class Person // 父类 { ... ... virtual void show() // 虚函数 { cout << "Name: " << name << endl; cout << "Age: " << age << endl; } ... ... }; ex14_virtual_fun01.cpp class Student : public Person // 派生类 { ... ... virtual void show() // 虚函数 { Person::show(); cout << "Stuid: " << stuid << endl; } ... ... };