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

Тема в разделе "Java", создана пользователем toxli, 24 фев 2013.

  1. toxli

    toxli New Member

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

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    1. ссылочная переменная - содержит ссылку на объект, а не сам объект, соответственно если присвоить нескольким таким переменным один объект, то при изменении параметров объекта, эти изменения "отразятся" во всех переменных, независимо, обращалась программа к ним или нет.
    2./3./4. Test t = new Test2(); тип ссылочной переменной Test (красный, суперкласс) ссылается на тип объекта Test2 (синий, подкласс), соответственно доступные объекты t ограничиваются Test, т.е. если в Test2 есть объект (н.р. переменная) который отсутствует в Test, ты его не увидишь.
    Как то так, про суперклассы и подклассы объяснять не надо?

    PS Читай книгу внимательней или возьми другую.
     
Загрузка...
Похожие Темы - Объясните Мне Пожалуйста
  1. smailvolf
    Ответов:
    1
    Просмотров:
    722
  2. unbarh
    Ответов:
    0
    Просмотров:
    1.251
  3. ball
    Ответов:
    0
    Просмотров:
    1.185
  4. kalachal
    Ответов:
    2
    Просмотров:
    1.560
  5. sasha465
    Ответов:
    2
    Просмотров:
    1.685

Поделиться этой страницей