用这个调用实例方法

时间:2013-09-25 04:59:39

标签: java this instance

我正在阅读一些代码而且我看到了这个:

abstract class Accum {

   /** Return the accumulated result. */
   abstract int result();

   /** Process and accumulate the value X. */
   abstract void accum(int x);

   /** Return the result of accumulating all of the values in vals. */
   int reduce(int[] vals) {
      for (int x : vals) 
        accum (x);
      return result ();
   }
}

如果不使用“this”引用手头的对象,reduce如何调用accum?这个函数调用的简写版本是否只适用于静态方法?如果这样可行,如果静态方法和非静态方法具有相同的名称,它会不会爆炸?

2 个答案:

答案 0 :(得分:2)

相反,您无法在this函数中使用static。声明函数static的目的是使其独立于对象实例 - 即this对象。

accum (x);的调用本质上与this.accum (x);相同。隐含this关键字。

在Java中,重载(即具有相同名称的函数)与函数是否为static无关。

答案 1 :(得分:0)

我认为这是java并基于此回答。

由于reduce不是静态方法,这意味着已经创建了一个对象,因此您可以在该方法中直接调用另一个非静态方法。否则即使使用“this”关键字也无法调用accum。

对于第二个问题,您可能只有一个同名的静态或非静态方法。只有在您有不同的参数时才可以重载方法。