📄 java03_05.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.5 方法的定义和实现</b></font></p>
<p align="left"> 类中的方法类似与C中的函数,但它一般属于某个类,用于实现可以加到某个对象上的操作。</p>
<p align="left">一、方法声明</p>
<p align="left"> [方法修饰符] [方法返回值类型] 方法名 ([形式参数表])</p>
<p align="left">其中,方法修饰符和成员变量的修饰符一样,有private,protected,public,缺省。它们的含义也完全相同。注意:这些修饰符是给外部类调用时才有区别,对于类中其他的方法而言,它们仿佛是不存在。<br>
另外,方法修饰符也可以是final和static,分别表示最终方法(这个用于继承中)和静态方法。</p>
<p align="left">方法的返回值类型也和成员变量的数据类型一致,有基本类型:int,char,double等,也可以是类名。<br>
另外,返回值类型可以是void,表示没有返回值。</p>
<p align="left">形式参数表和C的函数的参数表一样,也是<b>传值调用。</b></p>
<p align="left">例 方法的声明<br>
class Myclass{<br>
int k;<br>
protected int mul(int n)<br>
{ return n*2; //注意:返回值必须和方法前面声明的一致。<br>
}<br>
public void call()<br>
{ k=mul(3);<br>
}<br>
}</p>
<p align="left">二、方法体的实现<br>
实际上,除了抽象方法外,方法在声明的同时就必须实现,如上例。<br>
写一般的方法体和前面写main()方法并没有太大的区别,只是要注意形式参数和局部变量的问题。</p>
<p align="left">1、局部变量<br>
class Myclass{<br>
int k;<br>
int fun1()<br>
{ int n=2; //n是局部变量<br>
return n*k; //k是成员变量,都可用 <br>
} //一旦fun1执行完毕,n就不存在了<br>
<br>
int fun2()<br>
{ k=5; //正确,k可用<br>
return n+k; //错误,n是fun1的局部变量,不可用<br>
}<br>
int fun3()<br>
{ int n=3; //这个n和fun1中的n互不相干<br>
return n; <br>
}<br>
}</p>
<p align="left">2、形式参数<br>
形式参数从本质上说是一种局部变量,而且在JAVA中,它是传值调用的。<br>
class Myclass{<br>
void fun1(int n) //n是形式参数<br>
{ n=n*2;<br>
} //一旦fun1执行完毕,n就不存在了<br>
int fun2(int n) //这个n和fun1中的n互不相干<br>
{ <br>
return n*2;<br>
}<br>
void call()<br>
{ int k=3;<br>
fun1(k); //k作为实参,将值传给形参n<br>
System.out.println(k); //这个k是多少?<br>
k=fun2(k);<br>
System.out.println(k); //这个k是多少?<br>
}<br>
}</p>
<p align="left">3、重名问题<br>
同一方法内的形式参数不允许和局部变量同名,但它们都可以和成员变量同名。<br>
例:<br>
class Myclass{<br>
int k=2;<br>
void fun1(int n)<br>
{ int n; //这是错误的,n不能既是局部变量又是形式参数<br>
int k=3; //这是正确的<br>
System.out.println(k); //这输出的是几呢? <br>
}<br>
}<br>
<br>
4、this<br>
this是Java中的关键字,可以作为变量的前缀和方法的前缀。它用于指示当前对象的成员变量或方法。<br>
例,调用成员变量:<br>
class Myclass{<br>
int k=2;<br>
void fun1(int n)<br>
{ int k=3; //这是正确的<br>
System.out.println(k); //这输出的是局部变量<br>
System.out.println(this.k); //这输出的是成员变量 <br>
}<br>
}<br>
例,调用方法<br>
class Myclass{<br>
int k=2;<br>
void fun1(int n)<br>
{ int k=3; //这是正确的<br>
System.out.println(k); //这输出的是局部变量<br>
System.out.println(this.k); //这输出的是成员变量 <br>
}<br>
void fun2()<br>
{ this.fun1(3); //它和下面这条语句等价:<br>
fun1(3);<br>
}<br>
}<br>
this作为方法的前缀时,主要用于调用类的构造方法。<br>
注意:this不能出现在static方法中,这是因为static方法被调用时,不一定存在类的实例(对象),而this表示的就是“本”实例。</p>
<p align="left"><a href="index.htm">回目录</a> <a href="java03_04.htm">上一课</a>
<a href="java03_06.htm">下一课</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -