public class invokeMethod{ public void showMsg(){
, Z6 G q" K& Z! e" n! P# L System.out.println("this is showMsg");7 X$ R1 g# R# _& w: f
}
. G7 q1 k0 P! z* P- w public void callOther(){6 R! G- d" C/ O" c+ ^* {& j
showMsg();
0 e: t& `. r* }- ], Y }
3 ~2 S6 P/ C) U3 ~* X public static void main(String args[]){ Y% l- \3 S% b- J
invokeMethod ob=new invokeMethod();( c" t+ ~9 F* R5 k! J, \0 Q1 H
ob.callOther();1 ~- z) D0 [2 I0 N6 S
}
4 m- l/ j' r/ v4 q# \- q) ` }
4 h$ u- J! D" \4 S3 |& x 在上例中,体例callOther()和体例showMsg()处在统一个类中,所根柢用后者时直接使用体例名就可以了。2 ?; ] H2 }% v3 b, Y& `6 f% E
令人斗劲迷惑的处所是在main()体例中,此处挪用callOther()体例使用了看似斗劲麻烦的法子,先建树一个对象ob,再用对象名.体例的名目来挪用体例,这似乎是画蛇添足& U9 V; g4 D A5 ]2 i
现实上这里做是必需的。main()体例是一个静态体例,它由系统来挪用,系统在挪用它的时辰并没有建树一个invokeMethod的对象,而callOther和showMsg体例都是实例体例,他们被挪用时必需有对象存在,所以必需在main()体例中先建树一个对象ob才能挪用这两个体例,年夜这点来看,main()体例虽然在invokeMethod类的内部,但它的默示如同在类的外部一样。
" x9 Z, R! x. u. p/ l 这么诠释可能有的同窗还有迷惑,为什么callOther体例又能够直接挪用showMsg(),莫非它能保证在挪用后者时对象已经存在,谜底却是如斯,因为callOther自己是实例体例,它在执行时必然有对象存在,基于这个前提,它才能够直接挪用showMsg体例。 |