Объявление метода

Для того чтобы использовать в программе собственный метод, его необходимо объявить. Общая форма объявления метода имеет следующий вид:

тип имя_метода (список параметров)

{

//тело метода

}

Описание метода может начинаться с модификаторов. При объявлении метода необходимо указать тип значения, которое будет возвращено после выполнения метода в программу. Тип может быть любым как примитивным, так и ссылочным. Если значение возвращать не нужно, то указывается ключевое слово void. Затем идет произвольный идентификатор – имя метода. После имени метода в круглых скобках указывается список параметров (он может быть и пустым). В списке параметров через запятую перечисляются тип и идентификатор каждого параметра. Далее в фигурных скобках записываются операторы, составляющие тело метода. Даже если метод не выполняет никаких действий и операторы отсутствуют, его тело все равно должно описываться парой пустых фигурных скобок. В теле метода не может бытьописан другой метод, так как в Java нет вложенных процедур и функций.

Параметры – это данные, которые нужно передать в метод, чтобы корректно выполнился его программный код. Например, метод, вычисляющий площадь круга, должен получить в качестве параметра радиус круга. А метод, который находит сумму элементов массива int[] a, больших некоторого целого числа b, должен получить одномерный массив и целое число. Заголовок такого метода может иметь следующий вид:

int summa(int[] a, int b)

{

//тело метода

}

Обратите внимание, что в отличие от объявления переменных, в списке параметров метода запрещается указывать несколько идентификаторов для одного типа:

void myMethod (double x, y) // неверная запись!

void myMethod (double x, double y)//верная запись

Кроме этого, в методе запрещены одноименные параметры и создание локальных переменных, имена, которых совпадают с именами параметров.

В классе можно описывать методы с одинаковыми именами, но разными параметрами. Такое дублирование методов называется перегрузкой (англ., overloading) и является возможным, потому что компилятор различает методы не по имени, а по сигнатуре.

Сигнатура (англ., signature) определяется именем метода и его параметрами: их количеством, типом и порядком следования. В классе запрещено создание двух методов с одинаковыми сигнатурами. Тип возвращаемого значения не входит в сигнатуру метода, значит, методы не могут различаться только типом результата их работы. Рассмотрим пример класса, содержащего методы с одинаковыми именами:

class Point

{

void get() {…}

void get(int x) {…}

void get(int x, double y) {…}

void get(double x, int y) {…}

}

Класс Point объявлен корректно. Все методы, хотя и имеют одинаковые имена, но различаются параметрами, а значит, имеют разную сигнатуру. Например, следующие пары методов несовместимы друг с другом в одном классе:

void get() {}

int get() {}

void get(int x) {}

double get(int y) {}

Методы отличаются типом возвращаемого значения, которое не входит в определение сигнатуры. Стало быть, данные пары методов с одинаковыми сигнатурами.

И последнее, если в заголовке метода указан тип возвращаемого значения, а не void, то в теле метода обязательно должен находиться оператор return, после которого через пробел указывается возвращаемое значение или выражение, совместимое по типу с типом возвращаемого значения.Оператор return прерывает работу метода и передает результат выполнения указанного выражения основной программе – в то место, откуда метод был вызван. В методе без возвращаемого значения (void) также можно использовать выражение return без каких либо аргументов. Его можно указать в любом месте метода, в этой точке выполнение метода будет завершено.

Используя рассмотренный выше синтаксис, попробуем в качестве примера создать метод для вычисления площади трапеции. При разработке собственного метода важно определить входные и выходные данные. Входные данные – это параметры метода. Выходные данные – это его возвращаемое значение.

Как известно, площадь трапеции равна произведению полусуммы ее оснований на высоту: . Входными данными для рассматриваемого метода будут, очевидно, длины двух оснований и высота трапеции. Выходные данные (результат) – вещественное число, представляющее собой площадь трапеции.

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

Простейший вариант метода будет выглядеть следующим образом:

double areaTrapezoid (double a, double b, double h)

{return h*((a+b)/2);}

Создадим класс MyClass и добавим в него описание метода areaTrapezoid(). Данный класс является исполняемой программой, поэтому в нем будет находиться еще и метод main(), из которого при запуске программы нужно будет вызвать метод areaTrapezoid(). Для того, чтобы такой вызов был возможным, добавим в заголовке метода areaTrapezoid() модификатор static (он будет изучен нами позднее). Описание метода areaTrapezoid()должно находиться внутри класса, но не внутри метода main(), а на одном уровне с ним:

class MyClass {

static double areaTrapezoid (double a, double b, double h)

{return h*((a+b)/2);}

public static void main(String[] args)

{ // вызов метода areaTrapezoid()

}}

В результате класс MyClass содержит два метода: main(), выполняющийся при запуске программы и areaTrapezoid(), который необходимо вызвать.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: