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