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

📄 java入门(8).htm

📁 一本很容易入手
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P><B>  8.3 创建子类</B></P>
                  <P><B>  传授新知</B></P>
                  <P>  至此,我们已经学会了如何创建自己需要的自定义类,已经学会了创造!</P>
                  <P>  正如创建Java的类一样,人们在认知了大自然后,也开始创建属于自己的“类”,如“电灯”、“电视”、“电脑”、“电话”、“飞机”等……。这些伟大的发明使得历史的车轮迅速地向前滚去。</P>
                  <P>  然而,人类之所以得以这样迅速的发展,不仅得益于杰出科学家们的不断创新,还得益于继承,使得每一项新的发明与创造都是“站在巨人头上的进步”。人们在创造新事物的同时,还总结了一些用于创造的基础配件,如“集成电路”、“模板”,新的发明,就从组装、改进、复用它们而得到。</P>
                  <P>  软件危机后,人们意识到在软件工程领域也采用这种思想,必将使软件得于更大的发展。这就是软件复用。而在面向对象方法学中,创建子类就是用以实现这种思想的有效工具。在这一小节中,我们将学习如何继承一个类,创建出更有特色的子类。</P>
                  <P>  举个例子,我们在程序中定义了一个类:“交通工具”,而这时我们需要一个“客机”类,我们就可以通过继承“交通工具”类共性(公用变量和方法),然后新增一些“客机”类独有的属性和方法,就能够很轻松地构建出新的类来。如下图所示:</P><A 
                  href="Java入门(8).files/8-7.jpg"><IMG alt=8-7 
                  src="Java入门(8).files/8-7.jpg" width=450 border=0></A> 
                  <P><B>  图8-7 继承示意图</B></P>
                  <P>  下面,我们一起来看一个创建子类的例子。假设我们已有一个交通工具类vehicle:</P>
                  <P>  源程序:vehicle.java</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class vehicle
{
public int passenger;
public float carfare;
public vehicle()
{
passenger=0;
}
public vehicle(int p)
{
passenger=p;
}
public getgrossEarnings()
{
float grossEarnings= passenger*carfare;
return grossEarnings;
}
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  在这个类中,有两个成员变量:</P>
                  <P>  1) passenger:定义为公用的,整型数,用于存放乘客总数;</P>
                  <P>  2) carfare:定义为公用的,浮点数,用于存放票价。</P>
                  <P>  同时,我们构造了两个构造器方法:</P>
                  <P>  1) 如果没带参数,则将成员变量passenger赋值为0;</P>
                  <P>  2) 如果带上了一个int型参数,则将成员变量passenger赋值为这个数。</P>
                  <P>  另外,在程序中还有一个有用的方法:getgrossEarnings(),它用来统计这次的总收入(当然是乘客数乘以票价)。</P>
                  <P>  分析完这个类后,我们现在需要构建一个“客机”类,完成的功能与“交通工具”类相同。这时,我们就可以使用创建子类的方法来构建这个“客机”类:plane。</P>
                  <P>  源程序:plane.java</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class plane extends vehicle
{
public int baggage;
public float bPrice;
public plane()
{
super();
baggage=0;
}
public vehicle(int p,int b)
{
super(p);
baggage=b;
}
public getgrossEarnings()
{
float grossEarnings= passenger*carfare+baggage*bPrice;
return grossEarnings;
}
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  下面,我们来分析一下这段程序:</P>
                  <P>  1)public class plane extends vehicle</P>
                  <P>  第1句,是用来定义类的。它与其它类的定义不同的地方是后面加上了extends 
                  vehicle,其中extends的意思是扩展,也就是plane类是从vehicle类中扩展的,也就是说plane是vehicle的子类。</P>
                  <P>  大家应该还记得,我们在编写Java小应用程序的时候,定义类的时候,后面都有一个extends 
                  Applet,说明所有的小应用程序是从Applet类中扩展的。其中Applet是Java语言为小应用程序提供的一个类。</P>
                  <P>  2)</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public int baggage;
public float bPrice;
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  由于在客机上,行李也是计费的,因此,我们需要加上两个变量baggage和bPrice,这样,plane类就有了四个成员变量:</P>
                  <P>  § passenger:从超类vehicle中继承,用于存放乘客总数;</P>
                  <P>  § carfare:从超类vehicle中继承,用于存放票价;</P>
                  <P>  § baggage:新的成员变量,整型,用于存放计费行李总公斤数;</P>
                  <P>  § bPrice:新的成员变量,浮点数,用于存放每公斤行李的运费。</P>
                  <P>  3)</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public plane()
{
super();
baggage=0;
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  这一段程序构建了一个构造器方法。在这个方法中使用了一个第一次遇到的语句:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
super();
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  这个语句是用来调用超类的构造器,也就是调用了vehicle类的构造器vehicle()。</P>
                  <P>  同样,我们以相同的方法定义了另一个构造器plane(int p,int b)。</P>
                  <P>  4)</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public getgrossEarnings()
{
float grossEarnings= passenger*carfare+baggage*bPrice;
return grossEarnings;
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  由于行李也要计费了,所以总收入的计算方法也就不一样了,因此,在plane类中重新定义了方法getgrossEarnings,这叫做“方法overlay”。实际上就是指在子类中,重新定义一个新的同名方法,替换掉超类中定义的同名方法。</P>
                  <P><B>  自测练习</B></P>
                  <P>  1) 创建子类时,我们使用了一个新的关键字,是___________。</P>
                  <P>  a. subclass b.modifyclass c.extends d.inherit </P>
                  <P>  2) 子类继承时,___________不被继承。</P>
                  <P>  a.静态变量 b私有变量 c.公用变量</P>
                  <P>  3) 子类继承时,___________不被继承。</P>
                  <P>  a.私有方法 b公用方法 c.静态方法</P>
                  <P>  4) 如果你想要在子类中引用超类的构造器方法,应该使用___________。</P>
                  <P>  a.不可以引用 b.super() c.直接使用超类的构造器方法名</P>
                  <P>  5) 子类中的“方法overlay”是指:_______________。</P>
                  <P>  a. 在子类中,将超类里定义的某个方法去掉,使其不生效</P>
                  <P>  b.在子类中,重新定义超类里定义过的某个方法,使其更适合于子类。</P>
                  <P><B>  练习答案</B></P>
                  <P>  1)c 在Java语言中,用extends来表示继承一个类。</P>
                  <P>  2)b 用private定义的私有变量将不会被继承到子类中去。</P>
                  <P>  3)a 用private定义的私有方法将不会被继承到子类中去。</P>
                  <P>  4)b 在Java语言中定义了一个super()的方法,为子类提供了使用超类 的构造器方法的手段。</P>
                  <P>  5)b 方法overlay就是对其重新定义,使其更适合子类。</P></SPAN><BR>
                  <DIV class=contentblk align=right>【责任编辑:<A 
                  href="mailto:fjxufeng@linuxaid.com.cn">风过留枫</A>】<BR>【<A 
                  href="javascript:window.close();">关闭窗口</A>】</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!----><IMG 
      height=2 alt=smallline src="Java入门(8).files/smallline.gif" width=600 
      border=0>
      <TABLE cellSpacing=0 cellPadding=0 width=605 border=0>
        <TBODY>
        <TR>
          <TD height=2></TD></TR>
        <TR>
          <TD class=blackblk>
            <TABLE cellSpacing=1 cellPadding=0 width="100%" border=0>
              <TBODY>
              <TR>
                <TD class=blackblk align=middle>相关内容</TD>
                <TD class=brightblk 
        width="80%">&nbsp;</TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD height=2></TD></TR>
        <TR>
          <TD class=blackblk>
            <TABLE cellSpacing=1 cellPadding=0 width="100%" border=0>
              <TBODY>
              <TR>
                <TD class=brightblk>
                  <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
                    <TBODY>
                    <TR>
                      <TD></TD></TR>
                    <TR>
                      <TD>· 
        无</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!----><IMG 
      height=2 alt=smallline src="Java入门(8).files/smallline.gif" width=600 
      border=0>
      <TABLE class=blackblk cellSpacing=1 cellPadding=0 width=605 border=0>
        <TBODY>
        <TR>
          <TD>
            <TABLE class=brightblk cellSpacing=0 cellPadding=8 width="100%" 
            border=0>
              <TBODY>
              <TR>
                <TD>
                  <FORM name=remarkform onsubmit="return remarkformcheck()" 
                  action=/articles/savecom.jsp method=post><INPUT type=hidden 
                  value=35684958 name=nid> 
                  <TABLE cellSpacing=0 cellPadding=2 width="100%" 
                  bgColor=#e1e1e1 border=1>
                    <TBODY>
                    <TR align=middle>
                      <TD colSpan=2><B>请您评论</B></TD></TR>
                    <TR>
                      <TD align=middle width="15%">姓名:</TD>
                      <TD><INPUT maxLength=64 size=40 name=tfullname> </TD></TR>
                    <TR>
                      <TD align=middle width="15%">电邮:</TD>
                      <TD><INPUT maxLength=64 size=40 name=temail> </TD></TR>
                    <TR>
                      <TD align=middle width="15%">留言:</TD>
                      <TD><TEXTAREA name=tcomments rows=5 wrap=VIRTUAL cols=50></TEXTAREA> 
                      </TD></TR>
                    <TR align=middle>
                      <TD colSpan=2><INPUT type=submit value=发表 name=Submit> <INPUT type=reset value=取消 name=Submit2> 
                  </TD></TR></TBODY></TABLE></FORM></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!----><IMG 
      height=2 alt=smallline src="Java入门(8).files/smallline.gif" width=600 
      border=0>
      <TABLE class=blackblk cellSpacing=1 cellPadding=0 width=605 border=0>
        <TBODY>
        <TR>
          <TD>
            <TABLE class=brightblk cellSpacing=0 cellPadding=8 width="100%" 
            border=0>
              <TBODY>
              <TR>
                <TD>
                  <TABLE cellSpacing=0 cellPadding=4 width="100%" border=0>
                    <TBODY>
                    <TR>
                      <TD width="50%" bgColor=#cccccc><B>网友:用户</B></TD>
                      <TD bgColor=#cccccc><B>发表时间:2002-08-31 
11:02:04</B></TD></TR>
                    <TR>
                      <TD bgColor=#f5f5f5 colSpan=2>&nbsp;</TD></TR>
                    <TR>
                      <TD bgColor=#f5f5f5 colSpan=2>是不是应该分页呢?</TD></TR>
                    <TR>
                      <TD bgColor=#f5f5f5 colSpan=2>&nbsp;</TD></TR></TBODY></TABLE>
                  <TABLE cellSpacing=0 c

⌨️ 快捷键说明

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