其中private和static方法的行为与private方法不同

时间:2015-04-27 06:57:13

标签: java static private access-specifier

至于我的理解:

当方法是静态时,它是

  1. 早期绑定
  2. 甚至可以在没有创建对象之前使用类的名称进行调用
  3. 只能调用其中的静态成员。
  4. 我从未在编译时或运行时发现任何其他静态行为。 有没有?

    当方法是私有的时,它是

    1. 也是早期绑定
    2. 只能调用内部调用,因此可以直接调用而无需使用对象。
    3. 例如hugeCapacity()类中的ArrayList方法。

      private static final int DEFAULT_CAPACITY = 10;
      
      private static int hugeCapacity(int minCapacity) {
          if (minCapacity < 0) // overflow
              throw new OutOfMemoryError();
          return (minCapacity > MAX_ARRAY_SIZE) ?
              Integer.MAX_VALUE :
              MAX_ARRAY_SIZE;
      } 
      

      由于存在Java私有+静态方法。为什么需要他们。是否出于限制目的,限制在方法中访问非静态变量?

1 个答案:

答案 0 :(得分:2)

好吧,如果您不想向外界公开方法并仅在内部使用 ,您可以将它们标记为 private 。这也适用于static方法。一个例子:

public class Sample {

    public static void main(String[] args) {
        SomeTestClass.display1(); // compilation error
        SomeTestClass.display2();
    }

}

class SomeTestClass {
    private static void display1() {
        System.out.println("displaying 1..");
    }

    public static void display2() {
        display1();
        System.out.println("displaying 2..");
    }
}

在上面的代码中,method1()应该仅在类SomeTestClass中使用。这会增加抽象