Объясните пожалуйста вопрос 12 (тело вопроса ниже)
Ответ: Потому что метод changeName не возвращает результат выполнения
( а со словом void возвращает) хотя нас учили в 2 уровень, 7 лекция, что (цитата):
— А что еще за тип void такой?
— Некоторые функции просто что-то делают, но никаких значений не вычисляют и не возвращают, как наш метод main(), например. Для них придуман специальный тип результата – void – пустой тип.
Почему эта программа не скомпилируется?
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
System.out.println(cat.name);
changeName(cat);
System.out.println(cat.name);
}
public static String changeName(Cat cat) {
cat.name = "Jerry";
}
public static class Cat {
String name = "Tom";
}
}
Maksimt58
26 уровень
Объясните пожалуйста вопрос 12 в тесте лекции 11 уровень 2
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
RiccioMaster
27 марта 2019, 18:15
"Всё смешалось в доме Облонских..."
Давайте по порядку.
1) Почему программа не скомпилилруется?
Потому что отсутствует возвращаемое значение. В данном случае это связано с грамотным синтаксисом, а не с алгоритмом работы.
2) со словом void он не возвращает ничего и программа будет скомпиллирована
3) дурацкий код - зачем-то сделан возвращающий метод, от которого по логике программы ничего не надо возвращать - он просто лезет в переданный ему объект класса Cat и меняет там переменную name.
0
Maksimt58
27 марта 2019, 18:20
Спасибо за ответ.
Этот код из теста на уровне 2 в лекции 11 вопрос 12
прикладываю скриншот, так как не совсем понял ваш ответ в частности откуда взялся return null;
![]()
0
RiccioMaster
27 марта 2019, 18:23
Максим, рекомендую погуглить.
Еще раз повторю - не скомпилируется из-за отсутствия возвращаемого значения. Но вовзращаемое значение не участвует в логике работы кода.
Если это не понятно - почитайте про return и void.
+1
Maksimt58
27 марта 2019, 18:33
Хорошо, спасибо! Обращусь к гуглу!
0