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

📄 java9.htm

📁 Java语言入门
💻 HTM
字号:
<html>

<head>
<title>Java入门</title>
<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="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%">

<h3>第六章 对象、类、包和接口</h3>

<p>6.2.6构造方法</p>

<p>构造方法是一种特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个  
新的对象。构造方法具有和类名相同的名称,而且不返回任何据类型,在构造方法的实  
现中,也可以进行方法重写。</p> 
 
<p>例6.5</p> 
 
<p>class point{</p> 
 
<p>int x,y;</p> 
 
<p>point (){</p> 
 
<p>x=0;y=0;</p> 
 
<p>}</p> 
 
<p>point (intx,inty){</p> 
 
<p>this.x=x;this.y=y;</p> 
 
<p>}</p> 
 
<p>}</p> 
 
<p>上例中,我们对类Point实现了两个构造方法,方法名均为Point ,与类名相同。而且我们使  
用了方法重写,根据不同的参数分别对点的x、y坐标赋与不同的  
回忆在例6.2中,我们曾用init()方法对点的x、y坐标进行初始 ?。二者完成相同的功能  
,那么用构造方法的好处在哪里呢?</p> 
 
<p>当用运算符new为一个对象分配内存时,要调用对象的构造方 法,而当创建一个对象时  
,必须用new为它分配内存。因此用构造方法进行初始化避免了在  
生成对象后每次都要调  
用对象的初始化方法。如果没有实现类的构造方法,则Java运行 另外,构造方法只能由new运算符调用。我们将在§6.3中进行  
详细介绍。对构造方法同</p> 
 
<p>6.2.7finalize()方法</p> 
 
<p>在对对象进行垃圾收集前,Java运行时系统回自动调用对象的  
finalize()方法来释放系统资</p> 
 
<p>protected void finalize() throws throwable</p> 
 
<p>finalize()方法在类java.lang.Object中实现。如果要在一个所定义  
的类中实现该方法以释放 该类所占用的资源(即要重载父类的finalize()方法),则在对该类所  
使用的资源进行翻译后,一 般要调用父类的finalize()方法以清除对象使用的所有资源,包括  
?于继承关系而获得的资源</p> 
 
<p>……//cleanupcodeforthisclass</p>

<p>super.finalize();</p>

<p>}</p>

<p>将在§6.4中讲述,对类 java.lang.Ob-ject,我们也将在§6.4中讲述。</p>

<p>递 来进行交互(消息传递即  
激活指定的某个对象的方法以改变其状态或让它产生一定的行 为),最终完成复杂的任务  
我们分别讲述:</p> 
 
<p>对象的生成包括声明、实例化和初始化三方面的内容。通 ?的格式为:  
</p> 
 
<p>1.type objectName;声明了一个类型为type的对象。其中type是组 合类型(包括类和接口)。  
对象的声明并不为对象分配内存空间。</p> 
 
<p>2对象的构造方法,返回对 该对象的一个引用(即该对象所在的内存地址)。用new可以为一?类实例化多个不同的对  
象。这些对象分别占用不同的内存空间,因此改变其中一个对象  
的状态不会影响其它对象</p> 
 
<p>3.生成对象的最后一步是执行构造方法,进行初始化。由于  
对构造方法可以进行重写 ,所以通过给出不同个数或类型的参数会分别调用不同的构造方  
以例6.5中所定义的类Point为例,我们生成类Point的对象:</p> 
 
<p>Point p1=new Point();</p> 
 
<p>Point p2=new Point(5,10);</p> 
 
<p>这里,我们为类Point生成了两个对象p1、p2,它们分别调用不同  
的构造方法,p1调用缺省 的构造方法(即没有参数),p2则调用带参数的构造方法。p1、p2分  
虽然new运算符返回对一个对象的引用,但与C、C++中的指针不 同,对象的引用是指向  
一个中间的数据结构,它存储有关数据类型的信息以及当前对象  
所在的堆的地址,而对于 对象所在的实际的内存地址是不可操作的,这就保证了安全性6.3.2对象的使用  
对象的使用包括引用对象的成员变量和方法,通过运算符&middot;  
可以实现对变量的访问和 方法的调用,变量和方法可以通过设定一定的访问权限(见§6.6)  
我们先定义一个类Point,它在例6.5的定义中添加了一些内容 ?</p> 
 
<p>例6.6</p> 
 
<p>class Point{</p> 
 
<p>int x,y;</p> 
 
<p>String name=&quot;a point&quot;;</p> 
 
<p>Point(){</p> 
 
<p>x=0;</p> 
 
<p>y=0;</p> 
 
<p>}</p> 
 
<p>Point(int x,int y,String name){</p> 
 
<p>this.x=x;</p> 
 
<p>this.y=y;</p> 
 
<p>this.name=name;</p> 
 
<p>}</p> 
 
<p>int getX(){</p> 
 
<p>returnx;</p> 
 
<p>}</p> 
 
<p>int getY(){</p> 
 
<p>return y;</p> 
 
<p>}</p> 
 
<p>void move(int newX,int newY){</p> 
 
<p>x=newX;</p> 
 
<p>y=newY;</p> 
 
<p>}</p> 
 
<p>Point newPoint(String name){</p> 
 
<p>Point newP=new Point(-x,-y,name);</p> 
 
<p>return newP;</p> 
 
<p>}</p> 
 
<p>boolean equal(int x,int y){</p> 
 
<p>if(this.x==x&amp;&amp;this.y==y)</p> 
 
<p>return true;</p> 
 
<p>else</p> 
 
<p>return false;</p> 
 
<p>}</p> 
 
<p>void print(){</p> 
 
<p>System.out.println(name+&quot;:x=&quot;+x+&quot;y=&quot;+y);</p> 
 
<p>}</p> 
 
<p>}</p> 
 
<p>public class UsingObject{</p> 
 
<p>public static void main(String args[]){</p> 
 
<p>Point p=new Point();</p> 
 
<p>p.print();//callmethodofanobject</p> 
 
<p>p.move(50,50);</p> 
 
<p>System.out.println(&quot;**after moving**&quot;);</p> 
 
<p>System.out.println(&quot;Get x and y directly&quot;);</p> 
 
<p>System.out.println(&quot;x=&quot;+p.x+&quot;y=&quot;+p.y);//access variables of an  
object</p> 
 
<p>System.out.println(&quot;or Get x and y by calling method&quot;);</p> 
 
<p>System.out.println(&quot;x=&quot;+p.getY()+&quot;y=&quot;+p.getY());</p> 
 
<p>if(p.equal(50,50))</p> 
 
<p>System.out.println(&quot;I like this point!!!!&quot;);</p> 
 
<p>else</p> 
 
<p>System.out.println(&quot;I hate it!!!!!&quot;);</p> 
 
<p>p.newPoint(&quot;a new point&quot;).print();</p> 
 
<p>new Point(10,15,&quot;anothernewpoint&quot;).print();</p> 
 
<p>}</p> 
 
<p>}</p> 
 
<p>运行结果为:</p> 
 
<p>C:\java UsingObject</p> 
 
<p>a point:x=0y=0</p> 
 
<p>****aftermoving*****</p> 
 
<p>Get x and y directly</p> 
 
<p>x=50 y=50</p> 
 
<p>or Get x and y by calling method</p> 
 
<p>x=50 y=50</p> 
 
<p>I like this point!!!!</p> 
 
<p>a new point:x=-50 y=-50</p> 
 
<p>another newpoint:x=10 y=15</p> 
 
<p>1.引用对象的变量</p> 
 
<p>要访问对象的某个变量,其格式为:</p> 
 
<p>objectReference.variable</p> 
 
<p>其中objectReference是对象的一个引用,它可以是一个已生成的 对象,也可以是能够生成对  
例如:我们用Pointp=new Point();生成了类Point的对象p后,可以用 p.x,p.y来访问该点的x、y坐  
</p> 
 
<p>p.x=10; p.y=20;</p>

<p>或者用new生成对象的引用,然后直接访问,如:</p>

<p>tx=new point().x;</p>

<p>2.调用对象的方法</p>

<p>要调用对象的某个方法,其格式为:</p>

<p>,但是通过方法调用的方 式来实现能更好地体现面向对象的特点,建议在可能的情况下尽  
? 型 的值,我们可以合法地使 用这个值,如:例6.6中类Point的方法equal返回布尔值,我们可以用它  
来作为判断条件分别执行 </p> 
 
<p>if(p.equal (20,30)){</p> 
 
<p>……//statements when equal</p> 
 
<p>}else{</p> 
 
<p>……//statements when unequal</p> 
 
<p>}</p> 
 
<p>另外,类Point的方法newPoint返回该点关于原点的对称点,返回 ?也是一个Point类型,我们  
可以访问它的变量或调用它的方法,如: px=p.newPoint().x或 px=p.newPoint().getX(); </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 + -