План уровня:
Что еще можно посмотреть на досуге:
Инициализация членов класса
Отличная подборка историй трудоустройства учеников JavaRush. Почитайте обязательно!
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
- Перегрузка методов, особенность вызова конструкторов
- Модифиаторы доступа public, protected, модификатор по умолчанию (package), private
- Неявная реализация абстрактного метода
- Расширение видимости
- Расширение типа результата, возвращаемого методом
- Перегрузка методов
- Порядок вызова конструкторов
- статический блок
- Порядок инициализации данных

Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Да, очень странно. Вывод на экран:
Почему так происходит? Примитивы и обертки очень странно себя ведут с точки зрения обывательской логики)
Не могу понять, почему такой вывод, если мы присваиваем значения элементов массива a1 элементам массива a2. Ведь a1 по идее значения при этом не должны меняться. Объясните, пожалуйста.
Ведь me фактически ссылается на Tiger, т.е при вызове метода
getMyParent() в процессе работы программы определяется фактический класс объекта(а он Tiger) и должен вызваться метод именно класса Tiger, который должен вернуть ссылку на Tiger, а не на Cat.
В последней строчке в main при попытке присвоить Tiger myParent = me.getMyParent(); компилятор подчеркивает и пишет:
«Incopatible types. Required: Tiger. Found: Cat»
Вот пример кода:
Он выводит на экран
что для меня стало неожиданностью — не думал, что объектный тип будет «расширен» до примитивного.
Кто-то может рассказать, какая процедура расширения в таких случаях?
Вот например если так:
Почему в случае присваивания переменной a значения переменной d через функцию все нормально (a = 0),
а в случае присваивания переменной b значения переменной d компилятор пишет ошибку?
Если класс загружается сверху вниз, то d неизвестна ни там ни там. Судя по всему в случае использования функции применяется какой-то другой механизм?
немного похожий баг еще есть вот в такой штуке:
в вайле у тебя никогда иф не выполнится, и будет бесконечный цикл. Но если ты иф отсюда уберешь, тогда опять таки будет ошибка компиляции. Тебе подчеркнет эту строку:
и скажет что никогда не выполнится эта строка.
Показаны две ситуации.
В первой А во второй И никаких объяснений, почему же случается такая неочевидность :(
String и Object нет.