Объясните Мне Пожалуйста, Много Времени Это На Займёт

  • Автор темы Автор темы toxli
  • Дата начала Дата начала
T

toxli

Это глава: "Наследование"
Вот отрывок из книги: "Важно понимать, что доступные объекты определяются типом ссылочной переменной, а не типом объекта, на который она ссылается. То есть при присваивании ссылочной переменной суперкласса ссылки на объект подкласса доступ предоставляется только к указанным в ней частям объекта, определенного суперклассом."
У нас к примеру существует два класса Test и Test2.
Test t = new Test();
Test2 t2 = new Test2();

Test2 наследует Test. В Test2 существует метод weight. У класса Test доступа к этому методу нету. Но все таки, он пробует заполучить этот метод и пишет:
t=t2; - при вызове метода weight(который находится в Test2) через объект t, мы получаем ошибку... Всё правильно, при присваивании ссылочной переменной суперкласса(я не уверен, что такое ссылочная переменная)ссылки класса Test2, класс Test, как бы, не знает, что в него передает класс Test2. И из-за этого ошибка. Пожалуйста, объясните мне следующие выражения:
1.Что такое ссылочная переменная?
2.Как понять "доступные объекты определяются типом ссылочной переменной, а не типом объекта, на который она ссылается"
3. Что такое тип объекта? На какой объект ссылается ссылочная переменная?
4. И как вот понять такую фразу:"При присваивании ссылочной переменной суперкласса ссылки на объект подкласса доступ предоставляется только к указанным в ней частям объекта, определенного суперклассом." Как это, указанным частям объекта?
Спасибо, заранее...
 
1. ссылочная переменная - содержит ссылку на объект, а не сам объект, соответственно если присвоить нескольким таким переменным один объект, то при изменении параметров объекта, эти изменения "отразятся" во всех переменных, независимо, обращалась программа к ним или нет.
2./3./4. Test t = new Test2(); тип ссылочной переменной Test (красный, суперкласс) ссылается на тип объекта Test2 (синий, подкласс), соответственно доступные объекты t ограничиваются Test, т.е. если в Test2 есть объект (н.р. переменная) который отсутствует в Test, ты его не увидишь.
Как то так, про суперклассы и подклассы объяснять не надо?

PS Читай книгу внимательней или возьми другую.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab