调用方法的方式不同?

时间:2012-12-01 19:26:26

标签: java methods

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

如果您只编写方法或属性的名称,Java将根据以下规则猜测您在名称之前要写的内容

  1. 如果方法不是静态的,它将尝试查找带有名称的非静态方法/属性,然后查找静态方法/属性
  2. 如果方法是静态的,它将尝试仅查找静态方法/属性
  3. 有人能举个例子吗?我无法理解它的含义,因为它在找到方法之前怎么能知道方法是否是静态的,但是根据它是非静态还是静态来找到方法?或者他们指的是两种不同的方法或什么?

1 个答案:

答案 0 :(得分: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
    }

}