我读了一些代码,我看到了这个:
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"?函数调用的这个简写版本不是只适用于静态方法吗?如果这个方法有效,那么如果一个静态方法和非静态方法都有相同的名称,它不会爆炸吗?
发布于 2013-09-25 05:08:01
我假设这是java,并在此基础上回答。
因为reduce不是静态方法,这意味着已经创建了一个对象,因此您可以直接调用该方法中的另一个非静态方法。否则,即使使用"this“关键字也不可能调用accum。
对于第二个问题,您可能只有一个同名的方法,无论是静态的还是非静态的。只有当您有不同的参数时,才有可能重载方法。
发布于 2013-09-25 05:07:13
相反,不能在this函数中使用static。声明函数static的目的是使其独立于对象实例-即this对象。
对accum (x);的调用本质上与this.accum (x);相同。this关键字是隐含的。
在Java中,重载(即同名函数)与函数是否为static无关。
https://stackoverflow.com/questions/18996543
复制相似问题