0

我被告知这是调用方法的一种方式:

如果您只写方法或属性的名称,Java 将根据以下规则猜测您在名称前写的含义

  1. 如果方法不是静态的,它将尝试使用名称查找非静态方法/属性,然后查找静态方法/属性
  2. 如果方法是静态的,它将尝试仅查找静态方法/属性

谁能给我一个例子?我无法理解它的含义,因为它如何在找到方法之前知道该方法是否是静态的,但它是根据它的非静态还是静态来找到方法的?或者他们指的是两种不同的方法吗?

4

1 回答 1

2

这是一个示例,其中包含对方法 c、d 和 e 中将发生的情况的适当注释:

class A {
    // methods to be looked up
    // a static method
    static void a() {};
    // non-static method
    void b() {};


    static void c() {
         // valid reference to another static method
         a();        
    }

    static void d() {
         // This would fail to compile as d is a static method 
         // but b is a non-static
         b();        
    }

    // non-static method would compile fine
    void e() {
       a(); // non-static method can find a static method 
       b(); // non-static method can find another non-static method
    }

}
于 2012-12-01T19:39:12.740 回答