⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.1.3b.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<body>

<table align="right" width="300">
  <tr>
    <td>
    <img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='10.1.3.htm'" ></td>
    <td>
    <img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='10.2.1.htm'" ></imag></td>
  </tr>
</table>

<p> </p>

<table><tr><td>&nbsp;</td>
<td class="content">
<p>
程序10.1说明了使用c++定义具有继承关系的类的方法。根据继承关系,四边形是长方形和正方形的基类,每一个四边形(由继承性知道每一个长方形和正方形)包括八个属性--构成四个顶点坐标和一个方法--perimeter。另外,每一个长方形还有两个属性--长和宽;每一个正方形还有一个属性--边长。图1.2给出了四边形的继承层次图。在主程序中,r是属于Rectangle类的对象,s是属于Square类的对象,q1和q2是属于Quadrangle类的指针。由于Rectangle类和Square类都是Quadrangle类的子类,因此我们可以用q1和q2分别指向子类对象s和r。这在继承关系图中也称为<font class = "definition2">向上映射</font>。 
</p>
<p>
另外,Rectangle类和Square类通过覆盖基类Quadrangle的方法perimeter,以适应本类局部的特殊需求和环境。由上面可以看出,继承性概念给我们提供了这样的可能性:用简单的办法可以重用部分已有的实现,或扩充它们,还可以重写个别方法。 
</p>
<p>
在这个程序中我们还可以看到面向对象语言的一个重要特征:<font class = "definition2">多态性</font>。<font class = "definition2">多态性</font>是指基类的方法调用可以根据实际运行的对象类型不同实现对不同函数体的调用。在c++中多态性是通过虚函数来实现的。虚函数是以virtual关键字开头的函数,象程序10.1中的perimeter就是虚函数。当我们在主程序中调用q1-&gt;perimeter()时,就是一种多态性的表现,它会调用类Rectangle中的perimeter方法,而不是Quadrangle中的perimeter方法。 
</p>
<p>继承性引入了许多新的编译问题,本章的主要部分就是围绕着继承性的有效实现来考虑的,其它方面只在后面几节作简要的介绍。<p class="MsoNormal" align="center" style="text-align:center;text-indent:21.0pt">
<center><img src="images/10_2.gif" width="347" height="422"></center>

</td></tr></table>
<br>
<table align="right" width="300">
  <tr>
    <td>
    <img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='10.1.3.htm'" ></td>
    <td>
    <img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='10.2.1.htm'" ></imag></td>
  </tr>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -