欢迎来到天天文库
浏览记录
ID:11278009
大小:153.50 KB
页数:32页
时间:2018-07-11
《java开发技术大全》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、3.5 方法的调用方法定义的目的,就是要给其他人使用。多数情况下,使用方法需要进行显示的方法调用。方法被调用之后,就会执行方法体内部的语句,完成预定义的功能。3.5.1 方法调用的形式根据方法的调用者与被调用的方法所处的位置,方法调用的形式可以分为两种: ● 调用者和被调用方法位于同一类中,形式如下:[this.]方法名([实际参数列表])在大多数情况下,关键字this可以省略。 ● 调用者位于被调用方法所在类的外部,形式如下:对象名.方法名([实际参数列表]) 或者 类名.方法名([实际参数列表])实际参数列表是对应方法的形式参数列表,
2、可以是0个或多个变量或表达式,如果超过一个,需用逗号分隔。下面是方法调用的两个例子。【例3.14】同一类中调用方法示例。//-----------文件名invokeMethod.java,程序编号3.24-----------------publicclassinvokeMethod{ publicvoidshowMsg(){ System.out.println("ThisisshowMsgmethod"); } publicvoidcallOther(){ showMsg(); //调用类中的另外一个方法,这里也可以写成this.sh
3、owMsg() } publicstaticvoidmain(Stringargs[]){ //创建对象 invokeMethod ob=newinvokeMethod(); ob.callOther(); //调用callOther()方法 }}程序的输出如下:ThisisshowMsgmethod在程序3.24中,方法callOther()和方法showMsg()处在同一个类中,所以调用后者时,直接使用方法名就可以。令人比较疑惑的地方是在main()方法中,此处调用callOther()方法使用了看似比较麻烦的办法:先创建一个对象ob,在用
4、“对象名.方法名()”的格式来调用该方法,这似乎是多此一举。实际上,在这里,这么做是必须的。main()方法是一个静态方法,它由系统来调用。系统在调用它的时候,并没有创建一个invokeMethod的对象,而callOther()和showMsg()方法都是实例方法,它们被调用时,都必须有对象的存在。所以必须在main中先创建一个对象ob,才能调用这两个方法。从这一点来看,main方法虽然处在invokeMethod类的内部,但它的表现却如同在类的“外部”一样。这么解释,读者可能还会有疑惑:为什么callOther()又能够直接调用showMsg(),难道
5、它能保证在调用后者时,对象已经存在?答案确实如此,因为callOther()本身是实例方法,它在被执行时,一定是有对象存在的。基于这个前提,它才能够直接调用showMsg()方法。【例3.15】外部类调用方法示例。这里仍然利用程序3.24,另外再写一个类来使用invokeMethod类中的两个方法。//-----------文件名invokeOther.java,程序编号3.25-----------------publicclassinvokeOther{ publicstaticvoidmain(Stringargs[]){ invokeMetho
6、d ob=newinvokeMethod(); //创建对象 ob.callOther(); //调用callOther()方法 }}%注意:需要将invokeMethod.java和invokeOther.java两个方法放在同一个目录下面,然后分别编译。后面如无特殊说明,需要用到两个或两个以上文件的,都必须放在同一目录下编译。程序3.25和程序3.24的输出结果完全一样。细心的读者还会发现,在invokeOther类中的main()方法和invokeMethod类中的main()方法代码完全一样。在
7、3.7和3.8节中,还将进一步解释这一现象。在invokeOther类中,还可以调用showMsg()方法,形式还是ob.showMsg()。读者可以自己改动程序3.25查看效果。3.5.2 方法调用的参数在定义一个方法时,程序员可能会根据需要列出一个参数表,这些参数被称为形式参数,简称为形参。在调用方法时,需要调用者提供与之相匹配的参数表,被称为实际参数,简称为实参。这里的匹配有两个条件: ● 实参和形参的个数要相等。 ● 实参和形参对应位置上的数据类型要相容。即数据类型相同,或者实参可以做自动类型转换转换成形参类型。图3.5 方法调用的
8、传值过程 在方法调用发生时,系统会将实参的值按照位置关系一个一个传
此文档下载收益归作者所有