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