Нет связи между статическими и беспараметрическими методами.
Статический метод - это метод, который не обращается к состоянию экземпляра в принимающем классе (и, следовательно, его не нужно связывать с конкретным экземпляром). Он может легко принимать параметры:
public class Calculator
{
public static int Add(int a, int b) { return a + b; } // does not need any Calculator state
}
Статический метод может получать доступ к его параметрам (и, следовательно, может изменять их состояние, если они это позволяют):
public class Officialdom
{
public static void Rename(Person person) { person.Name = "Bob"; } // does not need any Officialdom state
}
И наоборот, метод без параметров вполне может нуждаться в доступе к состоянию приемника и, следовательно, быть экземпляром (нестатическим) методом:
public class Spline
{
private bool _isReticulated;
public void Reticulate()
{
_isReticulated = true; // does need Spline state
}
}
(я разместил примеры кода в C #, потому что он не зависит от языка; те же самые понятия и различия применяются в Java, возможно, с несколькими изменениями ключевых слов.)