Метод в Groovy определяется с типом возвращаемого значения или с ключевым словом def . Методы могут получить любое количество аргументов. Нет необходимости, чтобы типы были явно определены при определении аргументов. Модификаторы, такие как публичные, частные и защищенные могут быть добавлены. По умолчанию, если модификатор видимости не предоставлен, метод общедоступен.
Самый простой тип метода — метод без параметров, как показано ниже —
def methodName() { //Method code }
Ниже приведен пример простого метода
class Example { static def DisplayName() { println("This is how methods work in groovy"); println("This is an example of a simple method"); } static void main(String[] args) { DisplayName(); } }
В приведенном выше примере DisplayName — это простой метод, который состоит из двух операторов println, которые используются для вывода некоторого текста на консоль. В нашем статическом методе main мы просто вызываем метод DisplayName. Результатом вышеупомянутого метода будет —
This is how methods work in groovy This is an example of a simple method
Параметры метода
Метод более полезен, если его поведение определяется значением одного или нескольких параметров. Мы можем передать значения в вызываемый метод, используя параметры метода. Обратите внимание, что имена параметров должны отличаться друг от друга.
Самый простой тип метода с параметрами, как показано ниже —
def methodName(parameter1, parameter2, parameter3) { // Method code goes here }
Ниже приведен пример простого метода с параметрами
class Example { static void sum(int a,int b) { int c = a+b; println(c); } static void main(String[] args) { sum(10,5); } }
В этом примере мы создаем метод sum с двумя параметрами, a и b . Оба параметра имеют тип int . Затем мы вызываем метод sum из нашего основного метода и передаем значения переменным a и b .
Результатом вышеприведенного метода будет значение 15.
Параметры по умолчанию
В Groovy также есть возможность указать значения по умолчанию для параметров в методах. Если в метод для параметров не передаются значения, используются значения по умолчанию. Если используются как параметры по умолчанию, так и параметры по умолчанию, то следует отметить, что параметры по умолчанию должны быть определены в конце списка параметров.
Ниже приведен пример простого метода с параметрами —
def someMethod(parameter1, parameter2 = 0, parameter3 = 0) { // Method code goes here }
Давайте посмотрим на тот же пример, который мы рассматривали ранее для добавления двух чисел, и создадим метод, который имеет один параметр по умолчанию и другой параметр не по умолчанию —
class Example { static void sum(int a,int b = 5) { int c = a+b; println(c); } static void main(String[] args) { sum(6); } }
В этом примере мы создаем метод суммы с двумя параметрами, a и b . Оба параметра имеют тип int. Разница между этим и предыдущим примерами заключается в том, что в этом случае мы задаем значение по умолчанию для b как 5. Поэтому, когда мы вызываем метод sum из нашего основного метода, у нас есть возможность просто передать одно значение, равное 6, и это будет назначено параметру a в методе sum .
Результатом вышеприведенного метода будет значение 11.
class Example { static void sum(int a,int b = 5) { int c = a+b; println(c); } static void main(String[] args) { sum(6,6); } }
Мы также можем вызвать метод sum, передав 2 значения, в нашем примере выше мы передаем 2 значения 6. Второе значение 6 фактически заменит значение по умолчанию, назначенное параметру b .
Результатом вышеприведенного метода будет значение 12.
Возвращаемые значения метода
Методы также могут возвращать значения обратно вызывающей программе. Это требуется в современном языке программирования, где метод выполняет какие-то вычисления и затем возвращает требуемое значение вызывающему методу.
Ниже приведен пример простого метода с возвращаемым значением.
class Example { static int sum(int a,int b = 5) { int c = a+b; return c; } static void main(String[] args) { println(sum(6)); } }
В нашем примере выше обратите внимание, что на этот раз мы указываем тип возврата для нашего метода sum, который имеет тип int. В методе мы используем оператор return для отправки значения суммы в вызывающую основную программу. Поскольку значение метода теперь доступно для основного метода, мы используем функцию println для отображения значения в консоли.
Результатом вышеприведенного метода будет значение 11.
Методы экземпляра
Методы обычно реализуются внутри классов в Groovy, как и язык Java. Класс — это не что иное, как план или шаблон для создания различных объектов, который определяет его свойства и поведение. Объекты класса демонстрируют свойства и поведение, определенные его классом. Таким образом, поведение определяется созданием методов внутри класса.
Мы увидим классы более подробно в следующей главе, но ниже приведен пример реализации метода в классе. В наших предыдущих примерах мы определили наш метод как статические методы, что означало, что мы могли получить доступ к этим методам непосредственно из класса. Следующим примером методов являются методы экземпляров, в которых доступ к методам осуществляется путем создания объектов класса. Снова мы увидим классы в следующей главе, а пока покажем, как использовать методы.
Ниже приведен пример того, как методы могут быть реализованы.
class Example { int x; public int getX() { return x; } public void setX(int pX) { x = pX; } static void main(String[] args) { Example ex = new Example(); ex.setX(100); println(ex.getX()); } }
В нашем примере выше обратите внимание, что на этот раз мы не указываем статический атрибут для наших методов класса. В нашей основной функции мы фактически создаем экземпляр класса Example и затем вызываем метод объекта ex.
Результатом вышеупомянутого метода будет значение 100.
Локальные и внешние имена параметров
Groovy, как и Java, предоставляет возможность иметь локальные и глобальные параметры. В следующем примере lx является локальным параметром, который имеет область видимости только внутри функции getX (), а x является глобальным свойством, к которому можно получить доступ внутри всего класса Example. Если мы попытаемся получить доступ к переменной lx вне функции getX () , мы получим ошибку.
class Example { static int x = 100; public static int getX() { int lx = 200; println(lx); return x; } static void main(String[] args) { println(getX()); } }
Когда мы запустим вышеуказанную программу, мы получим следующий результат.
200 100
этот метод для свойств
Как и в Java, groovy может получить доступ к своим членам экземпляра, используя ключевое слово this . В следующем примере показано, как, когда мы используем оператор this.x , он ссылается на его экземпляр и соответственно устанавливает значение x .
class Example { int x = 100; public int getX() { this.x = 200; return x; } static void main(String[] args) { Example ex = new Example(); println(ex.getX()); } }
Когда мы запустим вышеуказанную программу, мы получим результат 200, напечатанный на консоли.