首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法调用实例方法。

方法调用实例方法。
EN

Stack Overflow用户
提问于 2013-09-25 04:59:38
回答 2查看 72关注 0票数 0

我读了一些代码,我看到了这个:

代码语言:javascript
复制
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 ();
   }
}

为什么减少会调用accum而不引用手头的对象和"this"?函数调用的这个简写版本不是只适用于静态方法吗?如果这个方法有效,那么如果一个静态方法和非静态方法都有相同的名称,它不会爆炸吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-25 05:08:01

我假设这是java,并在此基础上回答。

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

对于第二个问题,您可能只有一个同名的方法,无论是静态的还是非静态的。只有当您有不同的参数时,才有可能重载方法。

票数 0
EN

Stack Overflow用户

发布于 2013-09-25 05:07:13

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18996543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档