Что касается моего понимания:
Когда метод статичен, он
- ранняя привязка
- может вызывать с именем класса даже до того, как объект не будет создан
- может вызывать только статический член внутри него.
Я никогда не обнаружил другого поведения статики ни во время компиляции, ни во время выполнения. Есть ли какие-нибудь?
Когда метод является частным, он
- также раннее связывание
- может вызывать только внутренний вызов, поэтому может вызывать напрямую без объекта.
Например, метод 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 есть приватный + статический метод. Почему возникает их необходимость. Это с целью ограничения, чтобы ограничить доступ к нестатическим переменным внутри метода?
ClassName
для вызова статического метода, если вы вызываете его в том же классе (или подклассе). Дело в том, что вы должны сделать метод статическим, если он логически не работает с экземпляром класса - это так просто. - person Jon Skeet   schedule 27.04.2015