Введение в Java
Теория: Модуль 3. Урок 1. Основы использования и создания методов в классах.
Внимание! На слайде в уроке допущена опечатка: вместо car.setSpeed(spped) должно быть car.setSpeed(speed).
Внимание! Перед тем как нажать кнопу "далее" внимательно изучите текстовый материал и полезные ссылки!
Объявление метода
Логично, что для появления такого члена класса как метод — его нужно объявить.
Метод не является объектом в java сам по себе. Он всегда привязан к конкретному классу или объекту этого класса.
Метод объявляется всегда внутри тела класса. То есть между открывающей и закрывающей скобками класса. Желательно это делать после объявления всех полей класса.
Метод не может быть объявлен:
- внутри другого метода;
- внутри отдельного блока кода в пределах класса;
- за пределами класса;
- внутри условных операторов, циклов и пр.
Исключение составляют анонимные классы. Но об этом будет отдельный урок.
Объявление метода состоит из:
- модификатора доступа (private, package-private aka default, protected, public);
- модификатора уровня (static or not);
- возвращаемого типа;
- идентификатора этого метода (имя, по которому к нему можно будет обратиться);
- аргументов в круглых скобках, которые пишутся сразу за идентификатором, без пробелов (
methodName(int a, int b)); - фигурных скобок, в которые заключено тело метода.
Пример 1:
Пример 2:
Пример 3:
Что означают все эти слова в объявлении метода?
Разберем этот вопрос на примере метода, с которого начинается каждая программа:
-
public — это модификатор доступа (видимости). Конкретно public говорит, что этот метод доступен любому внешнему классу или программе.
Более детально о модификаторах доступа расскажем в пятом модуле.
-
static — это модификатор, отвечающий за уровень метода. Если есть такой модификатор — метод находится на уровне класса, а не объекта. Если нет модификатора
static— метод уровня объекта!Уровень метода:
+ или class level + или instance level (without keyword)
Детально эта тема будет рассмотрена буквально через урок.
-
void — конкретно это ключевое слово говорит, что метод ничего не возвращает. На его месте может быть любой тип из мира java — такой тип и должен возвращать метод.
Что может возвращать метод:
- any type (любой тип) и даже
null. Не важно что это, примитив или ссылочный тип. Но обязательно должно быть ключевое словоreturnв теле метода. - void --> Просто ничего не возвращать. Даже
null. Ключевое словоreturnне требуется, но может быть применено для преждевременного завершения работы метода, по задумке программиста.
- any type (любой тип) и даже
-
main — это идентификатор, имя метода. Конкретно в случае с
main-методом — это не просто имя, а метод с которого начинает выполняться вся программа.- имя метода:
- пишется в camelStyle - каждое слово в имени метода пишем с большой буквы, кроме самого первого слова;
- имя метода должно быть говорящим, как и у переменных. Только в случае с методом - имя должно быть глаголом!
- имя метода:
-
(String[] args) — в круглых скобках перечислены аргументы данного метода. Их может и не быть вовсе в каком-то методе, а в каком-то и десяток набежать.
-
... // некий код в теле метода — это непосредственно тело метода, находящееся между фигурных скобок:
{}. Именно внутри этих фигурных скобок и нужно писать логику которая, используя аргументы и поля класса, будет что-то вычислять.
Как вызвать метод?
Разберем на примере следующего класса:
Для начала создадим объект и ссылку на него: Car car = new Car(); // именно car с маленькой буквы, в данном примере, является ссылкой
Создавать этот объект необходимо в месте, где мы будем его использовать. Пускай это будет main-метод.
Если метод не статический, то для обращения к нему нужно:
- иметь ссылку на инстанс -->
car - использовать точку -->
car. - указать имя метода после точки -->
car.startEngine - передать аргументы, если они ожидаются -->
car.setSpeed(12);или не передать, если не ожидаются -->car.setSpeed();
Вот так это выглядит в коде:
Если метод статический, то его можно вызвать как через объект так и через имя класса:
car.startEngine();// вызов через объектCar.startEngine();// вызов через имя класса
Пример:
Детальнее об этом в уроке про уровни методов.
ключевое слово this
Это ссылка на текущий объект(инстанс). Рассмотрим на примере:
Не стесняйтесь копировать и экспериментировать с кодом локально у себя! И используйте вот этот визуализатор. Он показывает результаты работы отдельных выражений в коде.
Немного модифицированный пример из видео
На наш взгляд этот пример помогает уловить суть происходящего в коде на уроке. Не стесняйтесь тестировать и играться с этим кодом самостоятельно:
Как читать UML-диаграммы (методы)
С индикаторами модификаторов доступа Вы уже должны быть знакомы:
+ public
- private
# protected
default (нет никакого модификатора доступа)
Имена полей и их типы в диаграммах пишутся через двоеточие, например: countr: int, name: String. Но в коде, не забывайте, сначала пишем тип, а потом имя.
С методами почти тот же подход, только слов больше.
Например, если в диаграмме написано:
+ getAge(): int— этот методpublic, имеет имяgetAgeи возвращает объект типаint.- computeSomething(data1: Data, data2: Data): String— этот методprivate, имеет имяcomputeSomething, возвращает объект типаString, на вход принимает два аргумента с именамиdata1иdata2, оба типаData.+ setName(newName: String): void— это публичный метод с именемsetName, ничего не возвращает (void — пустота), принимает на вход аргумент с именемnewNameтипаString.
Полезные ссылки
- Для создания UML - GenMyModel. И всегда можно нагуглить подходящий редактор именно для Вас.
- Методы в Java - Oracle
- Методы в Java- Tutorialspoint
- Использование ключевого слова this
Завершено
0 / 38