C++ 类的继承和派生ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类中的protected成员与private成员一样,只能在本类 的成员函数中访问,不能在类外通过对象来访问。 但通过上面的表中可以看出当类派生时,基类的private成员 在派生类中是不可访问的。而基类的protected成员在派生 类中随继承方式的不同而不同。
-
//Point.h #include <iostream> #include <cmath> using namespace std; class Point { private:
int x,y; public:
int GetX() {
return x; } int GetY() {
return y; }
int width; int height; public: int GetWidth() {
return width; } int GetHight() {
return height; }
void SetRect(int x,int y,int w,int h) { SetPoint(x,y); width=w; height=h; } void ShowRect() { cout<<"左上角坐标
不可访问
public
private
private
protected private
private 不可访问
public
protected
protected
protected
protected
private
不可访问
-
4.4.1类的保护成员
前面介绍过类的成员(数据成员和成员函数)的访问属性有 私有的(private)的和公有的(public的)。另外还提到类的访问 属性也可以有保护的(protected的)。
第四章继承和派生
-
4.1继承和派生的概念
面向对象程序设计有4个主要特点: 抽象、封装、继承和 多态性。在本章中主要介绍有关继承的知识,在下一章中 将介绍多态性。
C++语言提供了类的继承机制,解决了软件重用问题。
4.1.1 继承与派生的概念
一个类中包含了若干数据成员和成员函数。在不同的类 中,数据成员和成员函数是不相同的。但有时两个类的内 容基本相同或有一部分相同。
int x; int y; GetX(); GetY(); SetPoint(); MovePoint(); ShowPoint();
继承
新 增
-
派生类(Rectangle)
int x; int y; GetX(); GetY(); SetPoint(); MovePoint(); ShowPoint(); int width; int height;
如程序PointRect1所示:
-
4.4继承方式
派生类的继承方式有三种:public,private,protected。 不同的继承方式决定了基类成员在派生类中的访问属性。
继承方式 基类中的访问属性 派生类中的访问属性
public
public
public
protected
protected
private
-
4.1.2 派生类和基类的关系
描述各级学生的类的继承关系如下图:
基类与派生类的关系: 派生类是基类的具体化,基类则是派生类的抽象 一个派生类的对象也是一个基类的对象。应该具有基类
的一切属性和方法。 派生类除了具有基类的一切属性和方法外,还可以有自
己所特有的属性和方法。 -
4.1.3 单继承与多继承
单继承:一个派生类只从一个基类继承。
多重继承:一个派生类从两个或多个基类继承。
-
4.2 派生类的声明方式
声明派生类的一般形式为 class 派生类名: [继承方式] 基类名 {
派生类新增加的成员 }; 继承方式包括: public(公有的),private(私有的)和 protected(受保护的),此项是可选的,如果不写此项,则默 认为private(私有的)。 如下程序演示了类Rectangle(四边形)由类Point继承而来。
void SetPoint(int x,int y) {
this->x=x; this->y=y; }
void MovePoint(int dx,int dy)
{ x+=dx; y+=dy;
}
void ShowPoint() {
cout<<'('<<x<<','<<y<<')'; } };
-
//Rectangle.h #include <iostream> #include "Point.h" using namespace std; class Rectangle:public Point { private:
GetWidth(); GetHeight();
SetRect(); ShowRect();
如果在派生类中定义了和基类中同名函数(函数参数个数 和类型可以相同也可以不相同),则派生类中的函数会隐藏基 类的同名函数。在派生类中不能直接访问基类中的同名函数。 (注意与重载的区别。在同一个类中的同名不同参函数为重载 函数)
-
类的继承:一个新类从已存在的类那里获得该类已有的 特性叫作类的继承。已存在的类叫作父类,也叫作基类。 产生的新类叫作子类或派生类。
类的派生:从一个已有的类那里产生一个新类的过程叫 类的派生。已存在的类叫作父类,也叫作基类。产生的新
类叫作派生类或子类。
类的继承和派生是同一概念,前者是从子类的角度来说, 后者是从父类的角度来说的。我们通常说子类继承了父类。 父类派生了子类。
为:"; ShowPoint(); cout<<endl; cout<<"宽为:
"<<width<<endl; cout<<"长为:
"<<height<<endl; }
};
-
//main.cpp #include "Rectangle.h" void main() {
Rectangle r; r.SetRect(0,0,10,20); r.ShowRect(); r.MovePoint(10,10); r.ShowRect(); }
-Biblioteka Baidu
4.3 派生类的构成
派生类中的成员包括从基类继承过来的成员和自己增加 的成员两大部分。在基类中包括数据成员和成员函数(或称数据 与方法)两部分,派生类分为两大部分: 一部分是从基类继承来 的成员,另一部分是在声明派生类时增加的部分。每一部分均 分别包括数据成员和成员函数。
数据成员 成员函数
基类(Point)
-
//Point.h #include <iostream> #include <cmath> using namespace std; class Point { private:
int x,y; public:
int GetX() {
return x; } int GetY() {
return y; }
int width; int height; public: int GetWidth() {
return width; } int GetHight() {
return height; }
void SetRect(int x,int y,int w,int h) { SetPoint(x,y); width=w; height=h; } void ShowRect() { cout<<"左上角坐标
不可访问
public
private
private
protected private
private 不可访问
public
protected
protected
protected
protected
private
不可访问
-
4.4.1类的保护成员
前面介绍过类的成员(数据成员和成员函数)的访问属性有 私有的(private)的和公有的(public的)。另外还提到类的访问 属性也可以有保护的(protected的)。
第四章继承和派生
-
4.1继承和派生的概念
面向对象程序设计有4个主要特点: 抽象、封装、继承和 多态性。在本章中主要介绍有关继承的知识,在下一章中 将介绍多态性。
C++语言提供了类的继承机制,解决了软件重用问题。
4.1.1 继承与派生的概念
一个类中包含了若干数据成员和成员函数。在不同的类 中,数据成员和成员函数是不相同的。但有时两个类的内 容基本相同或有一部分相同。
int x; int y; GetX(); GetY(); SetPoint(); MovePoint(); ShowPoint();
继承
新 增
-
派生类(Rectangle)
int x; int y; GetX(); GetY(); SetPoint(); MovePoint(); ShowPoint(); int width; int height;
如程序PointRect1所示:
-
4.4继承方式
派生类的继承方式有三种:public,private,protected。 不同的继承方式决定了基类成员在派生类中的访问属性。
继承方式 基类中的访问属性 派生类中的访问属性
public
public
public
protected
protected
private
-
4.1.2 派生类和基类的关系
描述各级学生的类的继承关系如下图:
基类与派生类的关系: 派生类是基类的具体化,基类则是派生类的抽象 一个派生类的对象也是一个基类的对象。应该具有基类
的一切属性和方法。 派生类除了具有基类的一切属性和方法外,还可以有自
己所特有的属性和方法。 -
4.1.3 单继承与多继承
单继承:一个派生类只从一个基类继承。
多重继承:一个派生类从两个或多个基类继承。
-
4.2 派生类的声明方式
声明派生类的一般形式为 class 派生类名: [继承方式] 基类名 {
派生类新增加的成员 }; 继承方式包括: public(公有的),private(私有的)和 protected(受保护的),此项是可选的,如果不写此项,则默 认为private(私有的)。 如下程序演示了类Rectangle(四边形)由类Point继承而来。
void SetPoint(int x,int y) {
this->x=x; this->y=y; }
void MovePoint(int dx,int dy)
{ x+=dx; y+=dy;
}
void ShowPoint() {
cout<<'('<<x<<','<<y<<')'; } };
-
//Rectangle.h #include <iostream> #include "Point.h" using namespace std; class Rectangle:public Point { private:
GetWidth(); GetHeight();
SetRect(); ShowRect();
如果在派生类中定义了和基类中同名函数(函数参数个数 和类型可以相同也可以不相同),则派生类中的函数会隐藏基 类的同名函数。在派生类中不能直接访问基类中的同名函数。 (注意与重载的区别。在同一个类中的同名不同参函数为重载 函数)
-
类的继承:一个新类从已存在的类那里获得该类已有的 特性叫作类的继承。已存在的类叫作父类,也叫作基类。 产生的新类叫作子类或派生类。
类的派生:从一个已有的类那里产生一个新类的过程叫 类的派生。已存在的类叫作父类,也叫作基类。产生的新
类叫作派生类或子类。
类的继承和派生是同一概念,前者是从子类的角度来说, 后者是从父类的角度来说的。我们通常说子类继承了父类。 父类派生了子类。
为:"; ShowPoint(); cout<<endl; cout<<"宽为:
"<<width<<endl; cout<<"长为:
"<<height<<endl; }
};
-
//main.cpp #include "Rectangle.h" void main() {
Rectangle r; r.SetRect(0,0,10,20); r.ShowRect(); r.MovePoint(10,10); r.ShowRect(); }
-Biblioteka Baidu
4.3 派生类的构成
派生类中的成员包括从基类继承过来的成员和自己增加 的成员两大部分。在基类中包括数据成员和成员函数(或称数据 与方法)两部分,派生类分为两大部分: 一部分是从基类继承来 的成员,另一部分是在声明派生类时增加的部分。每一部分均 分别包括数据成员和成员函数。
数据成员 成员函数
基类(Point)