2010-10-18 4 views
-1
static public void doRestrictionList(HttpServletRequest request, pageBean UTIL) 

Можем ли мы объявить метод как окончательный.Почему мы объявляем метод как статический

+3

Можете ли вы уточнить ваш вопрос? Заголовок содержит * static *, описание содержит незавершенное предложение, относящееся к * final *. Что вы хотите узнать? –

ответ

2

Добавление на то, что все остальные сказали , Обычный метод класса, который вы должны были бы создать объект следующим образом.

Если у вас есть класс с именем ClassExample с методом TestMethod Вы должны сделать следующее назвать

ClassExample example = new ClassExample(); 
example.testMethod()... 

, если у вас есть статический метод, вам не придется беспокоиться о создания объекта, так что вы можете сделать что-то подобное следующему

ClassExample.testMethod() 
+0

Использование метода, объявляющего как окончательный – John

+1

Он останавливает любой подкласс от переопределения этого метода, который может помочь в обеспечении безопасности в вашем классе. –

+0

точно так же, как сказал христианин, но в меньших терминах он делает метод неизменным – TheJediCowboy

3

Static означает, что для нормальной работы класса не требуется, чтобы какая-либо из переменных экземпляра в классе функционировала должным образом. Это может обеспечить более надежный API, как вы можете назвать свой метод с помощью:

MyClass.doRestrictionsList(req, util); 

Если вы не сделали его статическим, вы должны создать экземпляр класса, чтобы дать ему состояние, а затем вызвать ваш метод на том, что пример.

1

Мы объявляем методы статические, чтобы к ним можно было получить доступ, не имея экземпляра объекта на основе этого класса.

Используя ваш пример я мог бы назвать

SurroundingClass.doRestrictionList(...); 

Без статического ключевого слова, мне нужно сделать что-то вроде этого

SurroundingClass object = new SurroundingClass(); 
object.doRestrictionList(...); 
2

Статические методы могут быть использованы без создания экземпляра класса они принадлежат к.

От http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html

класса Методы

язык программирования Java поддерживает статические методы, а также статические переменные. Статические методы, которые имеют статический модификатор в их декларациях, должны вызываться с именем класса, без необходимости создания экземпляра класса, как в

ClassName.methodName(args)

1

Статические методы используются много для утилиты/convienent встретились hods, для которых вы хотите избежать затрат на создание нового экземпляра.

1

Ваше название должности и вопрос не совпадают. Вы ищете сравнение статических и конечных методов? Все описали статические методы, позвольте мне описать окончательные методы для вас.

Можете ли вы иметь окончательные методы в Java? Да

Объявление метода как окончательного означает, что он не может быть переопределен ни одним из реализующих подклассов.Из http://download.oracle.com/javase/tutorial/java/IandI/final.html

Вы могли бы пожелать, чтобы сделать метод окончательным , если он имеет реализацию, не должен быть изменен, и это решающего значения для последовательного состояния объекта

4

Статических методы в целом имеют смысл, когда функциональность не требуется прикреплять к реальному объекту, но логика имеет смысл приложить к классу. Часто это относится к методам типа утилиты, которые зависят от небольшого числа параметров. Например, я предпочитаю это:

int sum = Arithmetic.sum(13, 42); 

к этому:

Arithmetic arithmeticObject = new Arithmetic(); 
int sum = arithmeticObject.add(13, 42); 

или это:

Arithmetic arithmeticObject = new Arithmetic(13, 42); 
int sum = arithmeticObject.add(); 
+0

+1 для отображения более чем последствий использования или не использования статического –

+1

Или это, если вам нравится модный код: 'int sum = (new Arithmetic()) .add (13, 42); ' –