Size: a a a

2020 August 06

R

Rus in learn.java
вобщем с запроса все закидывается в transcriptPractice так как она последняя в наследовании а переменная используется course от TranscriptionCourse
источник

R

Rus in learn.java
но если посмотреть на этот скрин то course содержит данные transcriptPractice
источник

DC

Denis Chikanov in learn.java
Rus
парни посмотрите внимательно на скрины. объяснить не могу) вобщем мне нужно вызвать переменную companyName. почему у меня это не получается сделать?
Потому что у тебя поле типа TranscriptCourse, а поле companyName у тебя в наследнике TranscriptCourse
источник

R

Rus in learn.java
но я кликаю на this.course там все данные лежат
источник

DC

Denis Chikanov in learn.java
Rus
но я кликаю на this.course там все данные лежат
Потому что дебаггер показывает тебе реальный тип объекта, лежащего в поле, но у тебя нет гарантий, что именно такой наследник TranscriptCourse окажется там каждый раз
Блин, давай покажу тебе, к чему сводится твой вопрос.

Collection<String> collection = new ArrayList<>();
Сможешь ли ты получить доступ к методам ArrayList, которых нет в интерфейсе Collection, обращаясь к collection?
источник

R

Rus in learn.java
мне надо создать переменную от transcriptPractice что бы взять что мне надо?
источник

DC

Denis Chikanov in learn.java
First Sin
Ну так тогда все понятно, ты объявляешь переменную с типом TranscriptionCourse, у него нет геттеров, как тогда ты собираешься получить данные?
Геттеры вообще никакого отношения к этому не имеют
источник

DC

Denis Chikanov in learn.java
Rus
мне надо создать переменную от transcriptPractice что бы взять что мне надо?
Тебе надо разобраться в ООП и инкапсуляции, и том, как она реализуется средствами Java
источник

R

Rus in learn.java
Denis Chikanov
Тебе надо разобраться в ООП и инкапсуляции, и том, как она реализуется средствами Java
спасибо за помощь
источник

DC

Denis Chikanov in learn.java
источник

FS

First Sin in learn.java
Denis Chikanov
Геттеры вообще никакого отношения к этому не имеют
Чел пишет, что не может получить доступ к полям с помощью геттера у класса-родителя
> Геттеры вообще никакого отношения к этому не имеют
источник

DC

Denis Chikanov in learn.java
First Sin
Чел пишет, что не может получить доступ к полям с помощью геттера у класса-родителя
> Геттеры вообще никакого отношения к этому не имеют
Давай начнём с простого. Ты на его скрины посмотрел? Внимательно? Глазами?
источник

DC

Denis Chikanov in learn.java
First Sin
Чел пишет, что не может получить доступ к полям с помощью геттера у класса-родителя
> Геттеры вообще никакого отношения к этому не имеют
У него класс X, в котором есть поле типа Y, и есть класс Z, наследующийся от Y. Нужное ему поле - поле класса Z. В классе X у него в поле типа Y лежит ЭКЗЕМПЛЯР класса Z, но поскольку тип самого поля - Y, он естественно не сможет из поля с типом Y достать поле его наследника Z, который нечаянно оказался в этом поле в этом экземпляре объекта  типа X, хоть он сорок пять геттеров напишет.
источник

R

Rus in learn.java
Denis Chikanov
У него класс X, в котором есть поле типа Y, и есть класс Z, наследующийся от Y. Нужное ему поле - поле класса Z. В классе X у него в поле типа Y лежит ЭКЗЕМПЛЯР класса Z, но поскольку тип самого поля - Y, он естественно не сможет из поля с типом Y достать поле его наследника Z, который нечаянно оказался в этом поле в этом экземпляре объекта  типа X, хоть он сорок пять геттеров напишет.
логика ясна но то что дебаггер показывает поля класса Z это не понятно
источник

R

Rus in learn.java
я просто с таким первый раз сталкиваюсь
источник

R

Rus in learn.java
обычно показывает то что есть в классе или в родителях
источник

FS

First Sin in learn.java
Я уже сказал, что я ему лишь пояснил, почему у него нет геттеров (фактически доступа к полям наследника) в его супер-классе
источник

R

Rus in learn.java
но то что в потомказ впервые
источник

DC

Denis Chikanov in learn.java
Rus
логика ясна но то что дебаггер показывает поля класса Z это не понятно
Дебаггер показывает тебе, что находится в конкретном поле конкретного экземпляра объекта.
Представь, что ты создал руками ещё один экземпляр CourseCardHandler, и в поле course положил new TranscriptCourse().
У него же, очевидно, не будет поля companyName.
источник

DC

Denis Chikanov in learn.java
First Sin
Я уже сказал, что я ему лишь пояснил, почему у него нет геттеров (фактически доступа к полям наследника) в его супер-классе
Проблема не в геттерах. Проблема в типах.
Даже если геттеры будут, это не исправит ситуацию.
источник