HTML Diff
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 --&gt; Просто ничего не возвращать. Даже null. Ключевое слово return не требуется, но может быть применено для преждевременного завершения работы метода, по задумке программиста.</li>
35 <li>void --&gt; Просто ничего не возвращать. Даже 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>иметь ссылку на инстанс --&gt; car</li>
51 <ul><li>иметь ссылку на инстанс --&gt; car</li>
52 <li>использовать точку --&gt; car.</li>
52 <li>использовать точку --&gt; car.</li>
53 <li>указать имя метода после точки --&gt; car.startEngine</li>
53 <li>указать имя метода после точки --&gt; car.startEngine</li>
54 <li>передать аргументы, если они ожидаются --&gt; car.setSpeed(12);<em>или не передать, если не ожидаются</em>--&gt; car.setSpeed();</li>
54 <li>передать аргументы, если они ожидаются --&gt; car.setSpeed(12);<em>или не передать, если не ожидаются</em>--&gt; 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>