第四次作业 继承

第四次作业 继承与派生

一、教学目标

熟练运用继承与派生的相关知识解决程序问题

 

二、教学过程

(一)定义

1、继承与派生是同一过程从不同的角度看:

保持已有类的特任性而创造新类的过程称为继承。

在已有类的基础上新增自己的特性而产生新类的过程称为派生

2原有的类称为基类或父类,产生的新类称为派生类或子类

3直接参与派生出某类的基类称为直接基类,积累的积累甚至更高层的基类称为间接基类。

4、公有继承
当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员。派生类的其他成员可以直接访问它们。无论派生类的成员还是派生类的对象都无法访问基类的私有成员。
 
 举例:
class Point
{
private:
float x;
float y;

public:
void initP(float xx, float yy)
{
x = xx;
y = yy;
}
void Move(float xOff, float yOff)
{
x += xOff;
y += yOff;
}
float GetX(){return x;}
float GetY(){return y;}
};
class Rectangle :public Point
{
private:
float W;
float H;
public:
void initR(float x, float y, float w, float h)
{
W = w;
H = h;
initP(x, y);
}

float GetH(){return H;}

float GetW(){return W;} }; int main() { Rectangle R; R.initR(2, 3, 20, 20); R.Move(3, 2); cout << R.GetX() << R.GetY() << R.GetW() << R.GetH() << endl; return 0; }

 

 
5、私有继承
当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是通过派生类的对象,都无法访问从基类继承的私有成员。通过多次私有继承后,对于基类的成员都会成为不可访问。因此私有继承比较少用。
 
举例:class point 
{
 
}
class point2 :private point
{
 
}
 
 
 
6、保护继承
保护继承中,基类的公有成员和私有成员都以保护成员的身份出现在派生类中,而基类的私有成员不可访问。派生类的其他成员可以直接访问从基类继承来的公有和保护成员,但是类外部通过派生类的对象无法访问它们,无论派生类的成员还是派生类的对象,都无法访问基类的私有成员。

 

class A{
protectedint x;
};
class B:publicA{
public:
void function ();
};
void B:function(){
x=5;
}

 

 

 

 

三、总结与反思

派生类的生成过程就是吸收、改造基类成员并添加新的成员。

公有继承,私有继承和保护继承各有其优缺点,熟练应用之后可以更好的保护数据对象,提高代码质量

posted on 2019-10-13 16:46  nianshaomingtu  阅读(142)  评论(0编辑  收藏  举报

导航