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 */