標籤:
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 TestDiaoYong27 {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 A39 {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 TestDiaoYong62 {63 public static void main(String[] args) 64 {65 //A a = new A();66 //a.C();67 //因為C方法是靜態,所以可以直接使用類名調用。68 A.C();69 }70 }71 */
《同一個類中不同方法之間的調用相關問題(省略的類名或者this)》