zoukankan      html  css  js  c++  java
  • 《同一个类中不同方法之间的调用相关问题(省略的类名或者this)》

     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 */
  • 相关阅读:
    微信成为开发者C#代码
    Ajax.ActionLink()方法的使用
    Entity FrameWork初始化数据库的四种策略
    最长公共子序列
    表达式求值
    韩信点兵
    蛇形填数
    5个数求最值
    求转置矩阵问题
    素数求和问题
  • 原文地址:https://www.cnblogs.com/sun-/p/5445955.html
Copyright © 2011-2022 走看看