黑马程序员技术交流社区

标题: 为什么通过Test.function().method();看出function()是一个静态的 [打印本页]

作者: 李复安    时间: 2013-6-29 18:41
标题: 为什么通过Test.function().method();看出function()是一个静态的
如题:

第十三行的这句代码  Test.function().method();

为什么看到    Test.    就知道function()是一个静态的函数呢?

代码如下:

1    interface Inter
2    {
3            void method();
4   }

5     class Test
6     {
7           //补足代码,通过匿名内部类。
8    }
9  class InnerClassTest
10   {
11         public static void main(String[] args)
12        {
13                 Test.function.method();
14        }
15  }


作者: 陈雪琪    时间: 2013-6-29 18:45
因为直接是类名调用的啊。静态成员可以类名调用或者对象调用两种方法呐
作者: L.I.F.E    时间: 2013-6-29 18:49
调用方式:对象调用的方式和静态调用方式。第一个顾名思义,就是创建类的对象,来调用类中的方法等,第二个,静态调用方式,就是类名.方法直接调用类中的方法。

作者: 李复安    时间: 2013-6-29 19:32
陈雪琪 发表于 2013-6-29 18:45
因为直接是类名调用的啊。静态成员可以类名调用或者对象调用两种方法呐

对对,静态成员比非静态成员多一种调用方式。前面学的忘光了。。。

谢谢啦、
作者: 李复安    时间: 2013-6-29 19:33
L.I.F.E 发表于 2013-6-29 18:49
调用方式:对象调用的方式和静态调用方式。第一个顾名思义,就是创建类的对象,来调用类中的方法等,第二个 ...

嗯,类名.方法  静态成员才能这样调用。

多谢、
作者: lipingan0520    时间: 2013-6-30 08:54
能够通过类名直接调用方法,说明该方法是静态的,当类加载进内存的时候它就已经存在了。
通过调用 Test.function(),返回一个接口类型的对象,我们知道接口是不能创建对象的,所以我们只能返回接口的一个匿名子类对象,
最后才能调用method()方法.

代码如下:
  1. interface Inter
  2. {
  3.    void method();
  4. }

  5. class Test
  6. {
  7.     //补足代码,通过匿名内部类。
  8.         public static Inter function()
  9.         {
  10.                 return new Inter()        //返回接口匿名子类对象
  11.                 {
  12.                         public void method()
  13.                         {
  14.                                 System.out.println("method run");
  15.                         }
  16.                 };
  17.         };       
  18. }

  19. class InnerClassTest
  20. {
  21.     public static void main(String[] args)
  22.     {
  23.         Test.function().method();
  24.     }
  25. }
复制代码

作者: 王广亚    时间: 2013-6-30 10:03
Test.function.method();       //Test是一个类名,通过(类名.成员)这种方法调用的只有静态成员哦。所以能判定function是静态的。
作者: 李复安    时间: 2013-6-30 14:24
王广亚 发表于 2013-6-30 10:03
Test.function.method();       //Test是一个类名,通过(类名.成员)这种方法调用的只有静态成员哦。所以 ...

嗯,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2