Что касается методов: каждый метод Foo.method (Bar1 b1, BAR2, b2) по определению всегда может иметь альтернативные эквивалентные конструкции:
Bar.altmethod (Foo F, Бар b2)
и
статический STATICMETHOD (Foo е, Бар b1, Бар b2)
И вы можете также обернуть этот последний метод как метод intsance в классе обслуживания, который сам по себе является одноплодным (так что статическая-ность методы немного спрятано кланом ss это в).
Единственного убедительной причины иметь свой метод как метод экземпляра класса одного из ваших аргументов методы (статической версии), когда вы ожидаете там быть подклассами этого класса, и что он может полезно, чтобы эти подклассы имели специализированную реализацию метода.
Представьте
класса GeographicalFigure {квадратуры Object() {...}}
Это может быть полезно, чтобы оставить открытой возможность позже добавив
класс Circle расширяет GeographicalFigure {квадратуры объекта() {throw new ThisIsNoGoodException(); }}
Кроме этого, все ваши варианты в основном эквивалентны.
[Click me] (http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html). – Maroun
Проверьте это: [Статическое ключевое слово в java] (http://programmergate.com/static-keyword-java/) –