面向对象程序设计实践-11 继承和派生.pptxVIP

  • 4
  • 0
  • 约2.04千字
  • 约 18页
  • 2018-06-16 发布于福建
  • 举报

面向对象程序设计实践-11 继承和派生.pptx

面向对象程序设计实践-11 继承和派生

面向对象程序设计与实践 第十一讲 继承与派生 李衷怡 wendan_li@hust.edu.cn 引言 人类:           姓名、性别、年龄 教师类:        姓名、性别、年龄、专业、职称 管理人员类: 姓名、性别、年龄、职务 学生类:        姓名、性别、年龄、学号、班级、专业 人类 管理员类 学生类 教师类 继承与派生的基本概念 新增加的成员数据和成员函数 派生类的声明方式 类成员的访问权限 私有成员(private):可以被类自身的成员访问,但不能被包括派生类在内的其他任何类和任何普通函数访问 公有成员(public):可以被任何普通函数和任何类的成员函数访问 保护成员(protected):可以被类自身的成员访问和派生类的成员函数访问,但不能被任何类外或普通函数访问 类的继承方式 公有继承: 基类的私有成员不能被派生类的函数成员访问 基类的公有成员和保护成员在派生类中的访问权限不变 保护继承: 基类的私有成员不能被派生类的函数成员访问 基类的公有成员和保护成员在派生类中变为保护类型 私有继承: 基类的私有成员不能被派生类的函数成员访问 基类的公有成员和保护成员在派生类中变为私有类型 类的继承方式 继承方式 基类成员 private protected public private - - - protected private protected protected public private protected public 派生类示例 角 色 设 计 派生类示例 class Saint : public Soldier { public: void Attack(int boss)//重定义实施攻击 { Soldier::Attack(boss);//调用父类的函数 if(rand() % 10 5) { boss /= 2; cout Critical Strike!; } } }; 派生类示例 class Ghost : public Saint { public: void Attack(int boss)//重定义实施攻击 { Saint::Attack(boss); //调用父类的函数 if(rand() % 10 2) { boss = 0; cout Deadly Strike!!!; } } }; 派生类示例 DemoGame2 派生类的变化 可以继承基类的成员数据和成员函数 可以增加新的成员变量 可以增加新的成员函数 可以改变继承成员的访问权限 可以重新定义已有的成员函数 派生类的构造函数 包括新增的和基类的构造函数参数 派生类的构造函数 class Point //基类 { public: Point(int px, int py) //基类构造函数 { x = px; y = py; } }; class Circle : public point //派生类 { public: //派生类构造函数 Circle(int cx, int cy, int r): Point(cx, cy) { radius = r; } //只对派生类新增的数据成员初始化 }; 派生类的构造函数 int main() { Circle circle(2, 3, 6); //调用构造函数创建对象 return 0; } Circle(int cx, int cy, int r): Point(cx, cy) { radius = r; } 派生类的构造函数 Circle::Circle(int cx, int cy, int r): Point(cx, cy) 类外定义 Circle(int cy, int r): Point(100, cy) 使用常量 Circle(int cx, int cy, int r): Point(cx, cy), radius(r) { } 初始化表 有子对象的派生类的构造函数 class Circle: public Point //声明派生类 { private: //派生类的私有成员 int radius; Point rotate; //子对象 public: //派生类的构造函数 Circle(int cx, int cy, int r, int rx, int ry): Point(cx, cy), rotate(rx, ry) { rad

文档评论(0)

1亿VIP精品文档

相关文档