太自由

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 1 //同一个类中不同方法之间的调用相关问题(省略的类名或者this)
 2 class A
 3 {
 4     public void B()
 5     {
 6         System.out.println("b方法运行");
 7     }
 8     public void C()
 9     {
10         B();//下面引用《疯狂Java讲义》中的一段话。
11         /*
12         因为Java里的方法不能独立存在,它必须属于一个类或一个对象,
13         因此方法也不能直接像函数那样被独立执行,执行方法时必须使用
14         类或对象作为调用者,即所有的方法都必须使用“类.方法”或“对象.方法”
15         的形式来调用。这里可能产生一个问题:同一个类里不同方法之间相互调用
16         时,不就可以直接调用吗?这里需要指出的是:同一个类的一个方法调用另一个
17         方法时,如果被调用方法是普通方法,则默认使用this作为调用者;如果被调用
18         方法时静态方法,则默认使用类作为调用者。也就是说表面上看起来某些方法可以
19         被独立执行,但实际上还是使用this或类来作为调用者。
20 
21         所以上面这一句 B(); 其实是省略了this的,完整的语句应该是this.B();
22         */
23         System.out.println("c方法运行");
24     }
25 }
26 public class TestDiaoYong
27 {
28     public static void main(String[] args) 
29     {
30         //创建A类的对象a.
31         A a = new A();
32         //调用C方法。
33         a.C();
34     }
35 }
36 
37 /*
38 class A
39 {
40     public static void B()
41     {
42         System.out.println("b方法运行");
43     }
44     public static void C()
45     {
46         B();
47         //下面引用《疯狂Java讲义》中的一段话。
48 
49         因为Java里的方法不能独立存在,它必须属于一个类或一个对象,
50         因此方法也不能直接像函数那样被独立执行,执行方法时必须使用
51         类或对象作为调用者,即所有的方法都必须使用“类.方法”或“对象.方法”
52         的形式来调用。这里可能产生一个问题:同一个类里不同方法之间相互调用
53         时,不就可以直接调用吗?这里需要指出的是:同一个类的一个方法调用另一个
54         方法时,如果被调用方法是普通方法,则默认使用this作为调用者;如果被调用
55         方法时静态方法,则默认使用类作为调用者。也就是说表面上看起来某些方法可以
56         被独立执行,但实际上还是使用this或类来作为调用者。
57 
58         所以上面这一句 B(); 其实是省略了类名A的,完整的语句应该是A.B();
59     }
60 }
61 public class TestDiaoYong
62 {
63     public static void main(String[] args) 
64     {
65         //A a = new A();
66         //a.C();
67         //因为C方法是静态的,所以可以直接使用类名调用。
68         A.C();
69     }
70 }
71 */

 

posted on 2016-04-29 13:03  太自由  阅读(5691)  评论(0编辑  收藏  举报