📄 java03_06.htm
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java程序设计</title>
</head>
<body background="Bg.gif">
<p align="center"><font size="5"><b>§3.6方法的调用</b></font></p>
<p align="left">方法定义完成后,就可以供其他的方法或类来调用了。</p>
<p align="left">一、方法调用的形式:</p>
<p align="left"> [对象或类名.]方法名([实际参数表]);</p>
<p align="left">如果调用者和被调用者处于同一类中,或者是其子类,可以不需要对象或类名,如前面讲的所有的例子:<br>
class Myclass{<br>
int k=2;<br>
void fun1()<br>
{ System.out.println(k);<br>
}<br>
void fun2()<br>
{ fun1(); //这里调用了fun1<br>
}<br>
}<br>
只要是非static类型的方法,在同一个类的内部都可以相互调用,而无需考虑方法的访问权限。</p>
<p align="left">如果是在类的外部访问类的方法,就要加上对象或类名,如下例:<br>
class Myclass{<br>
int k=2;<br>
<b> private</b> void fun1()<br>
{ System.out.println(k);<br>
}<br>
<b>public</b> void fun2()<br>
{ System.out.println(k);<br>
}<br>
<b>protected</b> void fun3()<br>
{ System.out.println(k);<br>
}<br>
void fun4()<br>
{ System.out.println(k);<br>
}<br>
}<br>
class otherclass{<br>
void fun()<br>
{ Myclass ob=new Myclass(); //这里先将Myclass实例化,生成一个对象ob<br>
ob.fun1(); //引用形式正确,但fun1的访问权限不允许它访问<br>
ob.fun2(); //引用形式正确,访问成功<br>
ob.fun3(); //如果otherclass和Myclass位于同一包中或者是Myclass的子类,访问成功<br>
ob.fun4(); //如果otherclass和Myclass位于同一包中,访问成功<br>
}<br>
}<br>
<br>
如果方法是static类型,则可以用“类名.方法名()”来访问,而且事先可以不需要将类实例化。像下面这个例子:<br>
class Myclass{<br>
static void fun()<br>
{ System.out.println("I'm a static function!");<br>
}<br>
}<br>
class otherclass{<br>
public static void main(String argv[])<br>
{ Myclass.fun(); //直接通过类名调用<br>
Myclass ob=new Myclass();<br>
ob.fun(); //通过类的实例调用<br>
}<br>
}</p>
<p align="left">二、方法调用中的对象参数<br>
前面说过,方法调用时,简单类型的参数传递都是以传值的形式进行的,如果需要改变实参的值,就要通过对象参数了。<br>
如果参数是对象,则传递的是对象的引用,即形参和实参占用的是同一片内存空间。如果方法中改变了形参的值,则实参的值也随之改变。</p>
<p align="left">例如下例可以交换x和y的值:<br>
class Test{<br>
static void swap(MyInteger x, MyInteger y)<br>
{ MyInteger t;<br>
t=x;<br>
x=y;<br>
y=t;<br>
}</p>
<p align="left">三、访问权限的限制如下表所示:</p>
<table border="1" width="81%">
<tr>
<td width="42%"> </td>
<td width="17%">private</td>
<td width="16%">默认的</td>
<td width="18%">protected</td>
<td width="15%">public</td>
</tr>
<tr>
<td width="42%">同一个类中</td>
<td width="17%">√</td>
<td width="16%">√</td>
<td width="18%">√</td>
<td width="15%">√</td>
</tr>
<tr>
<td width="42%">同一包中的任意类</td>
<td width="17%"> </td>
<td width="16%">√</td>
<td width="18%">√</td>
<td width="15%">√</td>
</tr>
<tr>
<td width="42%">不同包中的子类</td>
<td width="17%"> </td>
<td width="16%"> </td>
<td width="18%">√</td>
<td width="15%">√</td>
</tr>
<tr>
<td width="42%">不同包中的非子类</td>
<td width="17%"> </td>
<td width="16%"> </td>
<td width="18%"> </td>
<td width="15%">√</td>
</tr>
</table>
<p align="left"><a href="index.htm">回目录</a> <a href="java03_05.htm">上一课</a>
<a href="java03_07.htm">下一课</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -