Статические методы полезны, если у вас есть только один экземпляр (ситуация, обстоятельства), где вы собираетесь использовать метод , и вам не нужно несколько копий (объектов). Например, если вы пишете метод, который регистрируется на одном и только одном веб-сайте, загружает данные о погоде, а затем возвращает значения, вы можете записать его как статический, поскольку вы можете жестко закодировать все необходимые данные в методе и вы не будете иметь несколько экземпляров или копий. Вы можете получить доступ к методу статический, используя один из следующих вариантов: используются
MyClass.myMethod();
this.myMethod();
myMethod();
Non-статические методы, если вы собираетесь использовать свой метод для создания нескольких копий. Например, если вы хотите загрузить метеорологические данные из Бостона, Майами и Лос-Анджелеса, и если вы можете сделать это из своего метода без индивидуальной настройки кода для каждого отдельного местоположения, вы затем получаете доступ к методу нестатически :
MyClass boston = new MyClassConstructor();
boston.myMethod("bostonURL");
MyClass miami = new MyClassConstructor();
miami.myMethod("miamiURL");
MyClass losAngeles = new MyClassConstructor();
losAngeles.myMethod("losAngelesURL");
В приведенном выше примере, Java создает три отдельные объекты и памяти места из того же метода, который вы можете получить доступ к индивидуально с «Бостоном», «сочи», или «LosAngeles» ссылка. Вы не можете получить доступ к любому из вышеперечисленных статически, потому что MyClass.myMethod(); является общей ссылкой на метод, а не на отдельные объекты, созданные нестатической ссылкой.
Если вы столкнулись с ситуацией, когда способ доступа к каждому местоположению или способ возврата данных достаточно отличается от того, что вы не можете написать метод «один размер подходит всем», не перескакивая через множество обручей , вы можете лучше выполнить свою задачу, написав три отдельных статических метода, по одному для каждого местоположения.
Определяет ли спецификатор доступа (public) доступ к статическому методу? Как то, что произойдет, если ваше имя метода будет static string method1()? –
Можно также поставить статический метод в UtililyClass? – karlihnos