Что касается моего понимания:где поведение частного и статический метод отличается от единственного частного метода
Если метод является статическим это
- рано связывать
- можно назвать с именем класс даже до того, как объект не будет создан
- может вызвать только статический член внутри него.
Я никогда не встречал другого поведения статического элемента во время компиляции или времени выполнения. Есть ли какие-нибудь?
Когда метод является частным это
- также рано связывать
- может вызвать только внутри вызова, так можно назвать непосредственно без объекта.
Например, метод 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 существует частный + статический метод. Почему их потребности происходят. Является ли это целью ограничения, чтобы ограничить доступ нестационарных переменных внутри метода?
Дело в том, что статические методы связаны с типом, а не с каким-либо экземпляром типа, тогда как методы экземпляра связаны с экземпляром типа. Частная часть полностью ортогональна этому. (Например, вы можете вызвать частный статический метод без каких-либо экземпляров, когда-либо существовавших ...) –
@JonSkeet Фактически сэр, поскольку частный метод является проблемой - они могут вызывать только внутри класса. Если вы можете называть их непосредственно name, поэтому зачем их связать с накладными расходами класса ClassName.methodName. – TheCurious
@ dubey-theHarcortians: Вам не нужно указывать 'ClassName' для вызова статического метода, если вы вызываете его в том же классе (или подклассе). Дело в том, что вы должны сделать метод статическим, если он не логически работает с экземпляром класса - это так просто. –