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

toxli

New member
15.02.2013
2
0
#1
Это глава: "Наследование"
Вот отрывок из книги: "Важно понимать, что доступные объекты определяются типом ссылочной переменной, а не типом объекта, на который она ссылается. То есть при присваивании ссылочной переменной суперкласса ссылки на объект подкласса доступ предоставляется только к указанным в ней частям объекта, определенного суперклассом."
У нас к примеру существует два класса 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. И как вот понять такую фразу:"При присваивании ссылочной переменной суперкласса ссылки на объект подкласса доступ предоставляется только к указанным в ней частям объекта, определенного суперклассом." Как это, указанным частям объекта?
Спасибо, заранее...
 

Serduko

Well-known member
11.10.2011
170
0
#2
1. ссылочная переменная - содержит ссылку на объект, а не сам объект, соответственно если присвоить нескольким таким переменным один объект, то при изменении параметров объекта, эти изменения "отразятся" во всех переменных, независимо, обращалась программа к ним или нет.
2./3./4. Test t = new Test2(); тип ссылочной переменной Test (красный, суперкласс) ссылается на тип объекта Test2 (синий, подкласс), соответственно доступные объекты t ограничиваются Test, т.е. если в Test2 есть объект (н.р. переменная) который отсутствует в Test, ты его не увидишь.
Как то так, про суперклассы и подклассы объяснять не надо?

PS Читай книгу внимательней или возьми другую.