0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Внимание!</strong>На слайде в уроке допущена опечатка: вместо car.setSpeed(spped) должно быть car.setSpeed(speed).</p>
1
<p><strong>Внимание!</strong>На слайде в уроке допущена опечатка: вместо car.setSpeed(spped) должно быть car.setSpeed(speed).</p>
2
<p><strong>Внимание!</strong>Перед тем как нажать кнопу "далее" внимательно изучите текстовый материал и полезные ссылки!</p>
2
<p><strong>Внимание!</strong>Перед тем как нажать кнопу "далее" внимательно изучите текстовый материал и полезные ссылки!</p>
3
<h2>Объявление метода</h2>
3
<h2>Объявление метода</h2>
4
<p>Логично, что для появления такого члена класса как метод - его нужно объявить.</p>
4
<p>Логично, что для появления такого члена класса как метод - его нужно объявить.</p>
5
<p>Метод не является объектом в java сам по себе. Он всегда привязан к конкретному классу или объекту этого класса.</p>
5
<p>Метод не является объектом в java сам по себе. Он всегда привязан к конкретному классу или объекту этого класса.</p>
6
<p><strong>Метод объявляется всегда внутри тела класса.</strong>То есть между открывающей и закрывающей скобками класса. Желательно это делать после объявления всех полей класса.</p>
6
<p><strong>Метод объявляется всегда внутри тела класса.</strong>То есть между открывающей и закрывающей скобками класса. Желательно это делать после объявления всех полей класса.</p>
7
<p>Метод не может быть объявлен:</p>
7
<p>Метод не может быть объявлен:</p>
8
<ul><li>внутри другого метода;</li>
8
<ul><li>внутри другого метода;</li>
9
<li>внутри отдельного блока кода в пределах класса;</li>
9
<li>внутри отдельного блока кода в пределах класса;</li>
10
<li>за пределами класса;</li>
10
<li>за пределами класса;</li>
11
<li>внутри условных операторов, циклов и пр.</li>
11
<li>внутри условных операторов, циклов и пр.</li>
12
</ul><p>Исключение составляют анонимные классы. Но об этом будет отдельный урок.</p>
12
</ul><p>Исключение составляют анонимные классы. Но об этом будет отдельный урок.</p>
13
<p>Объявление метода состоит из:</p>
13
<p>Объявление метода состоит из:</p>
14
<ul><li>модификатора доступа (private, package-private aka default, protected, public);</li>
14
<ul><li>модификатора доступа (private, package-private aka default, protected, public);</li>
15
<li>модификатора уровня (static or not);</li>
15
<li>модификатора уровня (static or not);</li>
16
<li>возвращаемого типа;</li>
16
<li>возвращаемого типа;</li>
17
<li>идентификатора этого метода (имя, по которому к нему можно будет обратиться);</li>
17
<li>идентификатора этого метода (имя, по которому к нему можно будет обратиться);</li>
18
<li>аргументов в круглых скобках, которые пишутся сразу за идентификатором, без пробелов (methodName(int a, int b));</li>
18
<li>аргументов в круглых скобках, которые пишутся сразу за идентификатором, без пробелов (methodName(int a, int b));</li>
19
<li>фигурных скобок, в которые заключено тело метода.</li>
19
<li>фигурных скобок, в которые заключено тело метода.</li>
20
</ul><p>Пример 1:</p>
20
</ul><p>Пример 1:</p>
21
<p>Пример 2:</p>
21
<p>Пример 2:</p>
22
<p>Пример 3:</p>
22
<p>Пример 3:</p>
23
<h2>Что означают все эти слова в объявлении метода?</h2>
23
<h2>Что означают все эти слова в объявлении метода?</h2>
24
<p>Разберем этот вопрос на примере метода, с которого начинается каждая программа:</p>
24
<p>Разберем этот вопрос на примере метода, с которого начинается каждая программа:</p>
25
<ul><li><p><strong>public</strong>- это модификатор доступа (видимости). Конкретно<strong>public</strong>говорит, что этот метод доступен любому внешнему классу или программе.</p>
25
<ul><li><p><strong>public</strong>- это модификатор доступа (видимости). Конкретно<strong>public</strong>говорит, что этот метод доступен любому внешнему классу или программе.</p>
26
<blockquote><p>Более детально о модификаторах доступа расскажем в пятом модуле.</p>
26
<blockquote><p>Более детально о модификаторах доступа расскажем в пятом модуле.</p>
27
</blockquote></li>
27
</blockquote></li>
28
<li><p><strong>static</strong>- это модификатор, отвечающий за уровень метода. Если есть такой модификатор - метод находится на уровне класса, а не объекта. Если нет модификатора static - метод уровня объекта!</p>
28
<li><p><strong>static</strong>- это модификатор, отвечающий за уровень метода. Если есть такой модификатор - метод находится на уровне класса, а не объекта. Если нет модификатора static - метод уровня объекта!</p>
29
<p>Уровень метода:</p>
29
<p>Уровень метода:</p>
30
+ или class level + или instance level (without keyword)</li>
30
+ или class level + или instance level (without keyword)</li>
31
</ul><blockquote><p>Детально эта тема будет рассмотрена буквально через урок.</p>
31
</ul><blockquote><p>Детально эта тема будет рассмотрена буквально через урок.</p>
32
</blockquote><ul><li><p><strong>void</strong>- конкретно это ключевое слово говорит, что метод ничего не возвращает. На его месте может быть любой тип из мира java - такой тип и должен возвращать метод.</p>
32
</blockquote><ul><li><p><strong>void</strong>- конкретно это ключевое слово говорит, что метод ничего не возвращает. На его месте может быть любой тип из мира java - такой тип и должен возвращать метод.</p>
33
<p>Что может возвращать метод:</p>
33
<p>Что может возвращать метод:</p>
34
<ul><li>any type (любой тип) и даже null. Не важно что это, примитив или ссылочный тип. Но обязательно должно быть ключевое слово return в теле метода.</li>
34
<ul><li>any type (любой тип) и даже null. Не важно что это, примитив или ссылочный тип. Но обязательно должно быть ключевое слово return в теле метода.</li>
35
<li>void --> Просто ничего не возвращать. Даже null. Ключевое слово return не требуется, но может быть применено для преждевременного завершения работы метода, по задумке программиста.</li>
35
<li>void --> Просто ничего не возвращать. Даже null. Ключевое слово return не требуется, но может быть применено для преждевременного завершения работы метода, по задумке программиста.</li>
36
</ul></li>
36
</ul></li>
37
<li><p><strong>main</strong>- это идентификатор, имя метода. Конкретно в случае с main-методом - это не просто имя, а метод с которого начинает выполняться вся программа.</p>
37
<li><p><strong>main</strong>- это идентификатор, имя метода. Конкретно в случае с main-методом - это не просто имя, а метод с которого начинает выполняться вся программа.</p>
38
<ul><li>имя метода:<ul><li>пишется в camelStyle - каждое слово в имени метода пишем с большой буквы, кроме самого первого слова;</li>
38
<ul><li>имя метода:<ul><li>пишется в camelStyle - каждое слово в имени метода пишем с большой буквы, кроме самого первого слова;</li>
39
<li>имя метода должно быть говорящим, как и у переменных. Только в случае с методом - имя должно быть глаголом!</li>
39
<li>имя метода должно быть говорящим, как и у переменных. Только в случае с методом - имя должно быть глаголом!</li>
40
</ul></li>
40
</ul></li>
41
</ul></li>
41
</ul></li>
42
<li><p><strong>(String[] args)</strong>- в круглых скобках перечислены аргументы данного метода. Их может и не быть вовсе в каком-то методе, а в каком-то и десяток набежать.</p>
42
<li><p><strong>(String[] args)</strong>- в круглых скобках перечислены аргументы данного метода. Их может и не быть вовсе в каком-то методе, а в каком-то и десяток набежать.</p>
43
</li>
43
</li>
44
<li><p><strong>... // некий код в теле метода</strong>- это непосредственно тело метода, находящееся между фигурных скобок: {}. Именно внутри этих фигурных скобок и нужно писать логику которая, используя аргументы и поля класса, будет что-то вычислять.</p>
44
<li><p><strong>... // некий код в теле метода</strong>- это непосредственно тело метода, находящееся между фигурных скобок: {}. Именно внутри этих фигурных скобок и нужно писать логику которая, используя аргументы и поля класса, будет что-то вычислять.</p>
45
</li>
45
</li>
46
</ul><h2>Как вызвать метод?</h2>
46
</ul><h2>Как вызвать метод?</h2>
47
<p>Разберем на примере следующего класса:</p>
47
<p>Разберем на примере следующего класса:</p>
48
<p><em>Для начала создадим объект и ссылку на него: Car car = new Car(); // именно car с маленькой буквы, в данном примере, является ссылкой</em></p>
48
<p><em>Для начала создадим объект и ссылку на него: Car car = new Car(); // именно car с маленькой буквы, в данном примере, является ссылкой</em></p>
49
<p>Создавать этот объект необходимо в месте, где мы будем его использовать. Пускай это будет main-метод.</p>
49
<p>Создавать этот объект необходимо в месте, где мы будем его использовать. Пускай это будет main-метод.</p>
50
<p>Если метод не статический, то для обращения к нему нужно:</p>
50
<p>Если метод не статический, то для обращения к нему нужно:</p>
51
<ul><li>иметь ссылку на инстанс --> car</li>
51
<ul><li>иметь ссылку на инстанс --> car</li>
52
<li>использовать точку --> car.</li>
52
<li>использовать точку --> car.</li>
53
<li>указать имя метода после точки --> car.startEngine</li>
53
<li>указать имя метода после точки --> car.startEngine</li>
54
<li>передать аргументы, если они ожидаются --> car.setSpeed(12);<em>или не передать, если не ожидаются</em>--> car.setSpeed();</li>
54
<li>передать аргументы, если они ожидаются --> car.setSpeed(12);<em>или не передать, если не ожидаются</em>--> car.setSpeed();</li>
55
</ul><p>Вот так это выглядит в коде:</p>
55
</ul><p>Вот так это выглядит в коде:</p>
56
<p>Если метод статический, то его можно вызвать как через объект так и через имя класса:</p>
56
<p>Если метод статический, то его можно вызвать как через объект так и через имя класса:</p>
57
<ul><li>car.startEngine(); // вызов через объект</li>
57
<ul><li>car.startEngine(); // вызов через объект</li>
58
<li>Car.startEngine(); // вызов через имя класса</li>
58
<li>Car.startEngine(); // вызов через имя класса</li>
59
</ul><p>Пример:</p>
59
</ul><p>Пример:</p>
60
<blockquote><p>Детальнее об этом в уроке про уровни методов.</p>
60
<blockquote><p>Детальнее об этом в уроке про уровни методов.</p>
61
</blockquote><h2>ключевое слово this</h2>
61
</blockquote><h2>ключевое слово this</h2>
62
<p>Это ссылка на текущий объект(инстанс). Рассмотрим на примере:</p>
62
<p>Это ссылка на текущий объект(инстанс). Рассмотрим на примере:</p>
63
<p>Не стесняйтесь копировать и экспериментировать с кодом локально у себя! И используйте<a>вот этот визуализатор</a>. Он показывает результаты работы отдельных выражений в коде.</p>
63
<p>Не стесняйтесь копировать и экспериментировать с кодом локально у себя! И используйте<a>вот этот визуализатор</a>. Он показывает результаты работы отдельных выражений в коде.</p>
64
<h4>Немного модифицированный пример из видео</h4>
64
<h4>Немного модифицированный пример из видео</h4>
65
<p>На наш взгляд этот пример помогает уловить суть происходящего в коде на уроке. Не стесняйтесь тестировать и играться с этим кодом самостоятельно:</p>
65
<p>На наш взгляд этот пример помогает уловить суть происходящего в коде на уроке. Не стесняйтесь тестировать и играться с этим кодом самостоятельно:</p>
66
<h2>Как читать UML-диаграммы (методы)</h2>
66
<h2>Как читать UML-диаграммы (методы)</h2>
67
<p>С индикаторами модификаторов доступа Вы уже должны быть знакомы:</p>
67
<p>С индикаторами модификаторов доступа Вы уже должны быть знакомы:</p>
68
<p>+ public - private # protected default (нет никакого модификатора доступа)</p>
68
<p>+ public - private # protected default (нет никакого модификатора доступа)</p>
69
<p>Имена полей и их типы в диаграммах пишутся через двоеточие, например: countr: int, name: String. Но в коде, не забывайте, сначала пишем тип, а потом имя.</p>
69
<p>Имена полей и их типы в диаграммах пишутся через двоеточие, например: countr: int, name: String. Но в коде, не забывайте, сначала пишем тип, а потом имя.</p>
70
<p>С методами почти тот же подход, только слов больше.</p>
70
<p>С методами почти тот же подход, только слов больше.</p>
71
<p>Например, если в диаграмме написано:</p>
71
<p>Например, если в диаграмме написано:</p>
72
<ul><li>+ getAge(): int - этот метод public, имеет имя getAge и возвращает объект типа int.</li>
72
<ul><li>+ getAge(): int - этот метод public, имеет имя getAge и возвращает объект типа int.</li>
73
<li>- computeSomething(data1: Data, data2: Data): String - этот метод private, имеет имя computeSomething, возвращает объект типа String, на вход принимает два аргумента с именами data1 и data2, оба типа Data.</li>
73
<li>- computeSomething(data1: Data, data2: Data): String - этот метод private, имеет имя computeSomething, возвращает объект типа String, на вход принимает два аргумента с именами data1 и data2, оба типа Data.</li>
74
<li>+ setName(newName: String): void - это публичный метод с именем setName, ничего не возвращает (void - пустота), принимает на вход аргумент с именем newName типа String.</li>
74
<li>+ setName(newName: String): void - это публичный метод с именем setName, ничего не возвращает (void - пустота), принимает на вход аргумент с именем newName типа String.</li>
75
</ul><h2>Полезные ссылки</h2>
75
</ul><h2>Полезные ссылки</h2>
76
<ul><li><a>Для создания UML - GenMyModel</a>. И всегда можно нагуглить подходящий редактор именно для Вас.</li>
76
<ul><li><a>Для создания UML - GenMyModel</a>. И всегда можно нагуглить подходящий редактор именно для Вас.</li>
77
<li><a>Методы в Java - Oracle</a></li>
77
<li><a>Методы в Java - Oracle</a></li>
78
<li><a>Методы в Java- Tutorialspoint</a></li>
78
<li><a>Методы в Java- Tutorialspoint</a></li>
79
<li><a>Использование ключевого слова this</a></li>
79
<li><a>Использование ключевого слова this</a></li>
80
</ul>
80
</ul>