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

📄 java入门(2).htm

📁 java入门,非常的浅显易懂JAVA入门Java入门(3).rar
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                  <P>  1) 数据(Data):用于描述各种状态的数据结构;</P>
                  <P>  2)过程(Procedures):就是操作这些状态数据的程序,有时也称为“算法”。</P>
                  <P>  说得形象一些,它认为数据是静态的,不会自行改变的,而需要各种各样的过程来改为数据。您还记得“数据结构”+“算法”=程序,这一个伟大的等式吗?这就是“面向过程”方法学的精髓。</P>
                  <P>  举个例子,我们要将一块木头从目前的位置向北搬到距原地10米的地方,我们首先会定义一个表示木头的数据结构,存储位置、质量等状态信息,然后再编写一个算法操作这个表示木头的数据结构,以达到目的。</P>
                  <P>  而“面向对象”的方法学则认为世界是由各种各样的对象(object)组成的,而每一个对象都有两个特征:状态(也称为属性)与行为(也称为方法)。</P>
                  <P>  说得形象一些,每个组成世界的对象都是通过自己的行为来变化自身的状态,一切变化都是对象自身、或对象间的协调而产生的。</P>
                  <P><B>  2.2.1 对象</B></P>
                  <P>  而上面那个例子如果使用“面向对象”的角度来看,我们会创建一个木头对象,这个对象不仅包括所有的属性、状态信息,还包括对它行为的描述。</P>
                  <P>  然后,我们让它执行一个自己的行为,使其发生相应的变化。这种方法更加符合自然世界,更加符合人类的思维习惯。</P>
                  <P>  也就是说,对象是一种对客观事物的抽象,它由状态(属性)和行为(方法)组成。</P>
                  <P>  下面,我们就使用一个图,来帮助大家认识对象。正如图2-1所示,我们使用一个大圆来表示一个对象,中间的一个小圆圈定义了这个对象的各种状态信息,外面则是各种各样的行为,通过执行这个对象的行为,就会改变这个对象的状态。</P><A 
                  href="Java入门(2).files/java201.jpg"><IMG alt=java201 
                  src="Java入门(2).files/java201.jpg" width=450 border=0></A> 
                  <P><B>  图2-1 木头对象示意图</B></P>
                  <P><B>  2.2.2 类(Class)</B></P>
                  <P>  在真实世界中,通常有许多对象具有相同的性质。如你家的猫,只是世界上所有家猫中的一只;你家的电脑,只是世界上所有电脑中的一台……。这些猫、电脑……都具有类似的功能、相似的属性,但却又不是完成一样的。</P>
                  <P>  这在面向对象的概念里,把“猫”、“电脑”……等称为“类”,而“你家的猫”、“你家的电脑”则是这个类的一个具体的实例,一个对象。</P>
                  <P>  也就是说,类是一个集合,一个模板,通常我们在使用面向对象的程序设计中,我们是先定一个类,然后用类去定义一个对象,这个对象就可以使用了。</P>
                  <P>  还记得在2.1小节里,我们举的那个例子吗?我们首先定义了“笔店”这个类,它拥有4个属性:</P>
                  <P>  1) 铅笔;</P>
                  <P>  2) 钢笔;</P>
                  <P>  3) 圆珠笔;</P>
                  <P>  4) 其它笔</P>
                  <P><B>  同时还定义了三个行为:</B></P>
                  <P>  1)卖出:将属性的值减少,表示卖出;</P>
                  <P>  2)进货:将属性的值增加,表示进货;</P>
                  <P>  3)盘点:打印出属性的值;</P>
                  <P>  接着,我们在主函数中,先定义了一个属于“笔店”的对象:“张三笔店”,然后就可以对这个对象进行操作了。</P>
                  <P>  可以看出,类与对象的定义是一样的:状态(属性)+行为(方法)。因为类是对象的超集嘛。我们可以对类下一个定义:</P>
                  <P>  类是由所有相似对象的状态变量(属性变量)与行为(方法)所构成的模板或原型。</P>
                  <P><B>  2.2.3 封装性</B></P>
                  <P>  我们知道,对于一个对象来说,要改变自身的状态就意味着发生了行为。换一句话说,只有调用属于对象自己的行为才能改变自己的状态信息。</P>
                  <P>  在面向对象的程序设计语言中,您必须遵循这一原则,而且语言本身就提供了这样的机制,使得你不可能不遵循。这种机制称为“封装性”。</P>
                  <P>  从软件工程学的角度来看,这种封装性有效地将对象的状态数据隐藏起来,符合信息隐蔽原则,能够有效地避免因过失而破坏了状态数据。</P>
                  <P><B>  2.2.4 消息传递(Message)</B></P>
                  <P>  在前面,我们说到在面向对象的世界中,一切变化都是对象自身、或对象间的协调而产生的。那么它们是如何进行协商的呢?</P>
                  <P>  在面向对象的程序设计中,我们采用一种叫消息传递(Message 
                  Passing)的机制来实现。消息从一个对象发到另一个对象,使另一个对象完成某一个行为。</P>
                  <P>  通常,我们把发送消息的对象称为“发送对象”(sender),而把接受消息的对象称为“接受对象”(receiver)。其工作如下图所示:</P><A 
                  href="Java入门(2).files/java202.jpg"><IMG alt=java202 
                  src="Java入门(2).files/java202.jpg" width=450 border=0></A> 
                  <P><B>  图2-2 消息传递机制工作示意图</B></P>
                  <P>  举一个我们身边的例子,在使用Windows 
                  98时,我们可以在不同的对象上按鼠标右键,就会出现这个对象的属性菜单。例如,在桌面上按右键,就会出现桌面的属性菜单;如果在“网络邻居”图标上按右键的话,就会出现网络属性菜单……</P>
                  <P>  这就是通过消息传递来实现的,在Windows 
                  98中,当我们单击鼠标右键时,“鼠标驱动程序”(一个对象)就会获取这个动作,然后向“系统”询问当前位置是什么对象,假设是“网络邻居”图标,那么它就向“网络邻居”这个图标(也是一个对象)发出一个消息,让其显示出属性菜单。</P>
                  <P>  Windows就是一个使用面向对象设计实现的,它采用了消息驱动机制,大家一定会记得,我们从开始菜单关机时,一些本来打开的程序在关机前先关闭,这都是消息机制的作用,在关机,系统向每一个运行着的“对象”传送了一个消息,使其关闭。</P>
                  <P><B>  2.2.5 继承</B></P>
                  <P>  在前面我们说过,对象是由类产生的,因此我们就可以通过对类的认识而了解对象。例如,假设你不知道“的士”是什么东西,我们只要说,“的士”是一种汽车,我想你马上就会知道个大概!而如果,我再进一步说明它是小轿车的话,你就会更明白了。</P>
                  <P>  到此,我们总结出一个道理,在现实世界中,有一些类比较大,可以分为许多小类,类是可以由其它的已知类来定义的。</P>
                  <P>  例如,汽车中有货车、客车、轿车……:</P>
                  <P>  1) 用于运输货物的汽车叫货车;</P>
                  <P>  2) 用于运输旅客的汽车叫客车;</P>
                  <P>  3) 豪华的、较低矮、较小的、有钱人(:-P)做的汽车叫轿车。</P>
                  <P>  而汽车、货车、客车、轿车都是类!在本例中,汽车这个类是货车、客车、轿车这三个类的超类(Superclass),而货车、客车、轿车这三个类则是汽车这个类的子类(subclass)。</P>
                  <P><B>  这四个类的关系,可以通过下面这个图来表示:</B></P><A 
                  href="Java入门(2).files/java203.jpg"><IMG alt=java203 
                  src="Java入门(2).files/java203.jpg" width=450 border=0></A> 
                  <P><B>  图2-3 超类与子类</B></P>
                  <P>  如果定义了超类,那么子类就可以直接将超类中定义的状态、行为继承过来,不再需要另外定义了。因为这些属性子类也是具备的。</P>
                  <P>  而子类之所以成为子类,是因为它们相对于超类而言,还有一些不同的地方,这需要增加一些属性、行为。</P>
                  <P>  还用一些子类需要对继承过来的超类进行一些局部的修改,使其更能真实子类的特性。</P>
                  <P>  在现实世界中,继承是可以多重的,也就是说一个子类可以同时拥有多个超类。而毕竟程序设计的世界并一定要完全一样。在这个问题上,面向对象的研究者们有分歧,有一部分人认为应该采用单一的继承,而有另一部分人则认为应该采用多重继承。后来就在不同的面向对象的程序设计语言中体现出来了:</P>
                  <P>  1) 在C++语言中,支持多重继承;</P>
                  <P>  2) 在Java、Smalltalk、Objective-C都不支持多重继承。</P>
                  <P><B>  为什么要引入继承的概念呢?</B></P>
                  <P>  1)继承机制提高了“软件可复用性”。大家应该知道,在结构化的程序设计中,我们常常将一些经常要使用的功能模块写成子程序,供程序调用,这样会大大提高开发效率。这也就是“软件复用”。</P>
                  <P>  而通过继承,我们可以在已定义类的基础上无限地繁衍出更多的类,并且通过直接继承、新增、局部修改来重复使用超类。这样必将使软件开发的速度更快,同时可以使程序共享成为可能。</P>
                  <P><B>  共享代码:</B></P>
                  <P>  通过共享代码,我们就可以继承他人写的或系统提供的类,直接使用现成的程序码并可以加以改写,扩展成为我们需要的东西。例如在Java中,窗口类已由Java的开发工具提供了,因为我们要做一个窗口时就无须重写写过,只需直接使用就可以了。</P>
                  <P><B>  2)继承机制的另一个好处在于它使得接口更加一致。</B></P>
                  <P>  当超类衍生出许多的子类时,它的行为接口通过继承,也传给了所有的子类。这样,做消息传递时,就无需关心每个子类的接口,它们都是一致的。</P>
                  <P><B>  2.2.6 小结</B></P>
                  <P>  面向对象方法学博大、深奥,绝不是通过以上这些只言片语能够说得清楚的,在此只能是做一些简单的介绍,让大家对其有一个基本的了解,以便更好地学习Java语言。</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入门(2).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入门(2).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=495658089 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入门(2).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></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!----></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=760 border=0>
  <TBODY>
  <TR>
    <TD height=5></TD></TR>
  <TR>
    <TD class=blackblk height=1></TD></TR>
  <TR>
    <TD class=brightblk align=middle><BR>(C) 1999-2003 
LinuxAid</TD></TR></TBODY></TABLE></CENTER></BODY></HTML>

⌨️ 快捷键说明

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