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

📄 java8.htm

📁 Java入门教程《Java入门》.rar
💻 HTM
字号:
<HTML><HEAD><TITLE>Java入门</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="Microsoft FrontPage 4.0" name=GENERATOR>
<style>
<!--
        A:link {text-decoration: none; color: "blue"}
        A:visited {text-decoration: none; color: "#000000"}
        A:active {text-decoration: none;color:"black"}
        A:hover {text-decoration: underline; color: ff0000}
-->
</style>
<style type="text/css">

<!--
p{font-size:9pt;line-height;13pt;}
td {   font-size: 9pt ; line-height:13pt;

	    }


	A{text-transform: none;

	  text-decoration: none;font-size: 9pt ; line-height:13pt;}
 -->copyright fangame
</style>
</HEAD>
<BODY bgColor=#ffffff>
<table border="1" width="100%">
  <tr>
    <td width="100%">
<H3>第六章 对象、类、包和接口</H3>
<P>在前面几章中,我们对Java的简单数据类型、数组、运算符 作了详细的介绍。从现在开始,我们要深入到面向对象的编程  
地方。本章中,我们首先讲述面向对象程序设计的基本概念及 点,然后讨论Java中的类、 对象、包和接口,最后进行小结,给出一个完整的Java文件的格? 。</P> 
<H4>§6.1面向对象的程序设计</H4> 
<P>面向过程的程序设计方法从解决问题的每一个步骤入手,? 适合于解决比较小的简单 问题。C语言采用面向过程的程序设计模型,但是由于C本身几?  
没有支持代码重用的语言 结构,并且缺乏统一的接口,使得当程序的规模达到一定程度时, 程序员很难控制其复杂性 。</P> 
<P>面向对象的程序设计方法则按照现实世界的特点来管理复 ?的事物,把它们抽象为对 象,具有自己的状态和行为,通过对消息的反应来完成一定的任 ?。</P> 
<P>6.1.1对象、类和消息</P> 
<P>一个对象就是变量和相关的方法的集合,其中变量表明对?的状态,方法表明对象所 具有的行为,下图表示了一个对象的特征:</P> 
<P>从图中可以看出,一个对象的变量构成这个对象的核心,包 在它外面的方法使这个 对象和其它对象分离开来。例如:我们可以把汽车抽象为一个  
象,用变量来表示它当前的 状态,如速度、油量、型号、所处的位置等,它的行为则可以有 ?速、刹车、换挡等。我  
们操纵汽车时,不用去考虑汽车内部各个零件如何运作的细节, ?只需根据汽车可能的行 为使用相应的方法即可。实际上,面向对象的程序设计实现了 对象的封装,使我们不必  
关心对象的行为是如何实现的这样一些细节。通过对对象的? 装,实现了模块化和信息隐 藏,有利于程序的可移植性和安全性,同时也利于对复杂对象的 ?理。</P> 
<P>对象之间必须要进行交互来实现复杂的行为。例如,要使? 车加速,必须发给它一个 消息,告诉它进行何种动作(这里是加速)以及实现这种动作所?  
的参数(这里是需要达到的 速度等)。下图表示了对象A与对象B间的消息传递过程。</P> 
<P>从图中可以看出,一个消息包含三个方面的内容:</P> 
<P>● 消息的接收者</P>
<P>● 接收对象应采用的方法</P>
<P>● 方法所需要的参数。</P>
<P>同时,接收消息的对象在执行相应的方法后,可能会给发送 息的对象返回一些信息 (如上例中,汽车的仪表上会出现已经达到的速度等)。  
由于任何一个对象的所有行为都可以用方法来描述,通过? 息机制就可以完全实现对 象之间的交互,同时,处于不同处理过程甚至不同主机的对象间 ?可以通过消息实现交互  
。</P> 
<P>上面所说的对象是一个具体的事物,例如每辆汽车都是一? 不同的对象。但是多个对 象常常具有一些共性,如所有的汽车都有轮子、方向盘、常具  
一些共性,如所有的汽车 都有轮子、方向盘、刹车装置等。于是我们抽象出一类对象? 共性,这就是类。类中定义 一类对象共有的变量和方法。把一个类实例化即生成该类的?  
个对象。比如我们可以定 义一个汽车类来描述所有汽车的共性。通过类的定义人们可? 实现代码的复用。我们不  
用去描述每一个对象(如某辆汽车),而是通过创建类(如汽车类) ?一个实例来创建该类的一 个对象,这大大减化了软件的设计。</P> 
<P>6.1.2继承</P> 
<P>通过对象、类,我们实现了封装,通过子类我们可以实现继 。</P> 
<P>对于上例来说,公共汽车、出租车、货车等都是汽车,但它 是不同的汽车,除了具有 汽车的共性外,它们还具有自己的特点(如不同的操作方法,不?  
的用途等)。这时我们可以 把它们作为汽车的子类来实现,它们继承父类(汽车)的所有状?和行为,同时增加自己的状  
态和行为。通过父类和子类,我们实现了类的的层次,可以从最 ?般的类开始,逐步特殊化 ,定义一系列的子类。同时,通过继承也实现了代码的复用,使  
序的复杂性线性地增长,而 不是呈几何级数增长。</P> 
<P>在C++中支持多重继承,即一个类可以继承多个父类,这使得 象的实现变得非常复杂 且不可预料(设想多个父类拥有某些相同的变量和方法)。Java?  
只支持单一继承,大大降低 了复杂度。在Java中通过接口可以实现多重继承,但接口的概念 ?简单,使用更方便,而且不  
仅仅限于继承,它使多个不相关的类可以具有相同的方法。</P> 
<P>6.1.3多态</P> 
<P>Java通过方法重写和方法重载来实现多态。 </P> 
<P> </P> 
<P>通过方法重写,一个类中可以有多个具有相同名字的方法, ?传递给它们的不同个数  
和类型的参数来决定使用哪种方法,这就是多态。例如,对于一和行为,同时增加自己的状 ?作图的类,它有一个  
draw()方法用来画图或输出文字,我们可以传递给它一个字符串 一个矩形、一个圆形,甚 至还可以再指定作图的初始位置、图形的颜色等,对于每一种  
现,只需实现一个新的 draw()方法即可,而不需要新起一个名字,这样大大简化了方法? 实现和调用,程序员和用户  
都不需要记住很多的方法名,只需要传入相应的参数即可。 通过方法重载,子类可以重新实现父类的某些方法,使其具 自己的特征。例如对于  
汽车类的加速方法,其子类(如赛车)中可能增加了一些新的部? 来改善提高加速性能,这时 可以在赛车类中重载父类的加速方法。重载隐藏了父类的方?  
,使子类拥有自己具体实现 ,更进一步表明了与父类相比,子类所具有的特殊性。</P> 
<P>本节中,我们对面向对象程序设计的一些基本内容作了讲? ,下面我们就分别讲述 Java是如何实现这些内容的。</P> 
<H4>§6.2类</H4> 
<P>类是组成Java程序的基本要素。它封装了一类对象的状态? 方法,是这一类对象的原 型。在前几章的例子中,我们已经定义了一些简单的类,如Helloo  
rldApp类。</P> 
<P>public class HelloWorldApp{</P>
<P>public static void main(String args[]){</P>
<P>System.out.println("Hello World!");</P>
<P>}</P>
<P>}</P>
<P>可以看出,一个类的实现包含两部分的内容:</P>
<P>classDeclaration{</P>
<P>classBody</P>
<P>}</P>
<P>下面我们分别对每一部分详细讲述。</P>
<P>6.2.1类声明</P>
<P>一个最简单的类声明如下:</P>
<P>class className{</P>
<P>……</P>
<P>}</P>
<P>例如:</P>
<P>class Point{</P>
<P>……</P>
<P>}</P>
<P>同时,在类声明中还可以包含类的父类,类所实现的接口以 修饰符public、abstract或 final。 我们将分别在后面的几节中介绍。</P>
<P>6.2.2类体</P>
<P>类体中定义了该类所有的变量和该类所支持的方法。通常 ?量在方法前定义(并不一 定要求),如下所示:</P> 
<P>class className{</P> 
<P>memberVariableDeclarations</P> 
<P>methodDeclarations</P> 
<P>}</P> 
<P>下例定义了一个Point类,并且声明了它的两个变量x、y坐标, ?时实现init()方法对x、y赋 初值。</P> 
<P>例6.1</P> 
<P>class Ponit{</P> 
<P>int x,y;</P> 
<P>void init(int ix,int iy){</P> 
<P>x=ix;</P> 
<P>y=iy;</P> 
<P>}</P> 
<P>}</P> 
<P>类中所定义的变量和方法都是类的成员。对类的成员可以 ?定访问权限,来限定其它  
对象对它的访问,访问权限所以有以下几种:private,protected,pubic,friendly。我们将在§6.6中详细 讨论。</P> 
<P>同时,对类的成员来说,又可以分为实例成员和类成员两种 我们在§6.8中详细讨论。</P> 
<P>6.2.3成员变量</P> 
<P>最简单的成员变量的声明为:</P> 
<P>typevariableName;</P> 
<P>如在例6.1中所声明的变量,intx,y;</P>
<P>成员变量的类型可以是Java中的任意数据类型包括简单类? 、数组、类和接口。在一 个类中,成员变量应该是唯一的,但是成员变量的名字可以和类  
?某个方法的名字相同,例 如:</P> 
<P>class Point{</P> 
<P>int x,y;</P> 
<P>int x(){</P> 
<P>return x;</P> 
<P>}</P> 
<P>}</P> 
<P>其中,方法x()和变量x具有相同的名字。</P> 
<P>类的成员变量和在方法中所声明的局部变量是不同的,成? 变量的作用域是整个类 ,而局部变量的作用域只是方法内部。  
对一个成员变量,我们还可以限定它的访问权限(见§6.6),? static限定它为类变量(见§ 6.7),或者用以下的修饰符限定:</P> 
<P>final:用来声明一个常量,如:</P> 
<P>class FinalVar{</P> 
<P>final int CONSTANT=50;</P> 
<P>……</P> 
<P>}</P> 
<P>例中声明了常量CONSTANT,并赋值为50。对于用final限定的常 ,在程序中不能改变它 的值。通常常量名用大写字母。</P> 
  
<p><a href="grade2.asp.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/grade2.asp.htm">目录</a>   
  
<ul>  
  <li><a HREF="java1.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java1.htm">Java入门(一)</a></li>  
  <li><a HREF="java2.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java2.htm" >Java入门(二)</a></li>  
  <li><a HREF="java3.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java3.htm">Java入门(三)</a></li>  
  <li><a HREF="java4.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java4.htm">Java入门(四)</a></li>  
  <li><a HREF="java5.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java5.htm">Java入门(五)</a></li>  
  <li><a HREF="java6.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java6.htm">Java入门(六)</a></li>  
  <li><a HREF="java7.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java7.htm">Java入门(七)</a></li>  
  <li><a HREF="java8.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java8.htm">Java入门(八)</a></li>  
  <li><a HREF="java9.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java9.htm">Java入门(九)</a></li>  
</ul>  
    </td> 
  </tr> 
</table> 
</BODY></HTML> 

⌨️ 快捷键说明

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