powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
64 сообщений из 64, показаны все 3 страниц
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839621
Andrey53791
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 класса. Calculator и My_Calculator, меня интересует, какая разница во 2 классе, если бы вместо этой инструкции Calculator cal = new My_Calculator();
была бы эта инструкция: Calculator cal = new Calculator ();
Разницы же никакой, и на мой взгляд проще будет этот вариант
Calculator cal = new Calculator ();
или для кого что удобнее? сталкивался с вопросами на собеседовании, но разницы никакой не вижу.




//класс 1
class Calculator {
int c;

public void addition(int a, int b) {
c = a + b;
System.out.println("Сумма чисел: " + c);
}

public void subtraction(int a, int b) {
c = a - b;
System.out.println("Разность чисел: " + c);
}
}

//класс 2
public class My_Calculator extends Calculator{
public void multiplication(int a, int b) {
c = a * b;
System.out.println("Произведение чисел: " + c);
}

public static void main(String args[]) {
int a = 10, b = 20;
Calculator cal = new My_Calculator();
cal.addition(a, b);
cal.subtraction(a, b);
}
}
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839622
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя в май калькуляторе могут быть пере определены методы тогда объект класса калькулятор будет вести себя иначе чем если ты его инстанциируешь через нью калькулятор
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839639
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTУ тебя в май калькуляторе могут быть пере определены методы тогда объект класса калькулятор будет вести себя иначе чем если ты его инстанциируешь через нью калькулятор

Так как на практике это часто случается, но входит в противоречие с базовым принципом ООП сформулированного Барбарой Лисковой

Роберт С. Мартин определил[3] этот принцип так:

Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.

https://ru.wikipedia.org/wiki/Принцип_подстановки_Барбары_Лисков


Видимо это из ТС пытались выманить на интервью
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839648
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буквы солидаи можно трактовать и так и сяк и Холи варить на эту тему кто правее. Типа системы должны быть открыты для добавления функционала но не для изменения. Ты конечно же думаешь что они намекают что потомки не должны оверрайдить методы родителей да?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839652
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTБуквы солидаи можно трактовать и так и сяк и Холи варить на эту тему кто правее. Типа системы должны быть открыты для добавления функционала но не для изменения. Ты конечно же думаешь что они намекают что потомки не должны оверрайдить методы родителей да?

На самом деле это исключительно для интервью вопрос. В реальной жизни понятно, что заоверидю без сожаления и любого другого осуждать не буду.

Сами принципы SOLID хороши понятно для разработки и то да се. Но если надо, то и синус может быть выше единицы.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839659
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTБуквы солидаи можно трактовать и так и сяк и Холи варить на эту тему кто правее. Типа системы должны быть открыты для добавления функционала но не для изменения. Ты конечно же думаешь что они намекают что потомки не должны оверрайдить методы родителей да?
Видимо его спросили это
если бы вместо этой инструкции Calculator cal = new My_Calculator();
была бы эта инструкция: Calculator cal = new Calculator ();
и он не смог ответить.

Я помню что в универе на 1м курсе я тоже не понял мотивации к использованию ООП и полиморфизма.
Я к тому времени неплохо знал Basic, Pascal, Assembler и тоже имел "свой" взгляд на вещи.

А тут? Как ткнуть носом доказательство? Этож не теорема мать ево Пифагора. Просто best practices.
Или так называемые философии программинга. Всякие Киссы. Солиды и Ягни. Попробуй их докажи
когда математики нет. Это не тождество что слева там нолик и справа доказано что нолик.

Да и вообще некоторым людям нужен отрезок времени длиной в жизнь чтобы понять какие-то
истины. Зачем женился например? Тоже вроде как безсмысленная тема. Женидьба.... Мдя.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839661
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял пример.
Второй класс добавил метод который не нужен и не используется.
Значить и сам второй класс не нужен.
В чём подвох?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839669
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА тут? Как ткнуть носом доказательство? Этож не теорема мать ево Пифагора. Просто best practices.
Или так называемые философии программинга. Всякие Киссы. Солиды и Ягни. Попробуй их докажи
когда математики нет. Это не тождество что слева там нолик и справа доказано что нолик.

Вот именно про это я и говорил в предыдущем топике, все эти SOLID и тд - лишь костыли, призванные улучшить изначально корявую философию ООП
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839681
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpне понял пример.
Второй класс добавил метод который не нужен и не используется.
Значить и сам второй класс не нужен.
В чём подвох?
если в дебри не вдаваться имхо надо сказать что и как себя будет вести и в чем в конце-концов различия. чела спросили - в чем разница. але. а тут народ уже в философию ударился.

какие то там лисковы, солиды и всё прочее.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839723
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey53791Есть 2 класса. Calculator и My_Calculator, меня интересует, какая разница во 2 классе, если бы вместо этой инструкции Calculator cal = new My_Calculator();
была бы эта инструкция: Calculator cal = new Calculator ();
Разницы же никакой, и на мой взгляд проще будет этот вариант
Calculator cal = new Calculator ();
или для кого что удобнее? сталкивался с вопросами на собеседовании, но разницы никакой не вижу.


Разница на самом деле есть

инициализация класса Calculator cal = new My_Calculator(); будет идти дольше и памяти займет больше

Вам видимо надо было тупо ответить типо Принцип Барбары Лисков соблюден, работать будет дольше, но так же.

В общем на интервью часто всякие придурки встречаются надо действовать по обстоятельтсвам и быть на чеку как в песне у Владимира Семеновича

Но могут действовать они не прямиком,
Шасть в купе, и притвориться мужиком.
А сама наложит тола под корсет...
Ты проверяй, какого пола твой сосед
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839734
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то, я тоже не поняла по поводу Calculator cal = new My_Calculator()

в С++, если переопределить методы Калькулятора в МайКалькуляторе, то, условно говоря, калькулятор инициализированный как

Calculator *cal = new My_Calculator()
будет себя вести как калькулятор (и не будет использовать оверлоад методы)
Calculator *cal = new Calculator();
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839735
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergunkaРазница на самом деле есть
инициализация класса Calculator cal = new My_Calculator(); будет идти дольше и памяти займет больше
а вот это похоже на правду :)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839736
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergunkaAndrey53791Есть 2 класса. Calculator и My_Calculator, меня интересует, какая разница во 2 классе, если бы вместо этой инструкции Calculator cal = new My_Calculator();
была бы эта инструкция: Calculator cal = new Calculator ();
Разницы же никакой, и на мой взгляд проще будет этот вариант
Calculator cal = new Calculator ();
или для кого что удобнее? сталкивался с вопросами на собеседовании, но разницы никакой не вижу.


Разница на самом деле есть

инициализация класса Calculator cal = new My_Calculator(); будет идти дольше и памяти займет больше

Вам видимо надо было тупо ответить типо Принцип Барбары Лисков соблюден, работать будет дольше, но так же.

В общем на интервью часто всякие придурки встречаются надо действовать по обстоятельтсвам и быть на чеку как в песне у Владимира Семеновича

Но могут действовать они не прямиком,
Шасть в купе, и притвориться мужиком.
А сама наложит тола под корсет...
Ты проверяй, какого пола твой сосед


насколько больше второй вариант подъест памяти?
насколько это принципиально?

вы слышали про ковариантность и инвариантность?

что вы с этим лисковым пристали? весь солид - это лишь набор РЕКОМЕНДАЦИЙ. причем, местами весьма спорный.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839737
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabSergunkaРазница на самом деле есть
инициализация класса Calculator cal = new My_Calculator(); будет идти дольше и памяти займет больше
а вот это похоже на правду :)
если ты пишешь классы и строишь приложение так что у тебя один класс отъедает какие то невнятные объемы - то тут уже явно не до способов инициализации объектов. а о кое-чем другом заботиться надо.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839742
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос-то был на теорию, и я подумала, что тоже не смогла бы на него ответить.
вообще-то, в подобных случаях, я говорю, что ответа не знаю, и прошу интервьюера подсказать правильный ответ.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839745
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще такой вариант ответа.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839754
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabвопрос-то был на теорию, и я подумала, что тоже не смогла бы на него ответить.
вообще-то, в подобных случаях, я говорю, что ответа не знаю, и прошу интервьюера подсказать правильный ответ.

Это довольно обычная стратегия и обычно всегда срабатывает. Так как вопрос, очевидно, с подвохом, то проще подыграть интервьюверу так как если правильно ответить это может только разодорить неокрепший разум

Вон как коллега возбудился только от упоминания Барбары
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839756
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabи не будет использовать оверлоад методыих нет в примере. Что об этом разговаривать?
В плюсах около 80 методов инициализации класса).
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839793
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопросы с подвохом это говно вопросы потому что задаваемый с ними сам может сесть в лужу. Показав некомпетентность. Вон как коллега чуть выше
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839805
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый что ни на есть good way это на собеседовании показать фрагмент рабочего кода из проекта и обсудить его.
Во первых - свежий взгляд со стороны. Во вторых еще раз исполнить duck debugging, и самому проговорить свой код.
Возможно после этого и новые идеи пойдут. Не боги... как говорицца горшки обжигают.

Синтетические задачи наподобие обедающих философов или спящих парикмахеров интересны только теоретикам.
И далеки от практических задач которые могут возникнуть. Я к слову сам не уверен что смогу без подготовки
пояснить в чём проблема парикмахера и почему она вынесена как отдельный пункт среди проблем
concurrency/parallelism.

Вобщем нужна подготовка.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839875
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСамый что ни на есть good way это на собеседовании показать фрагмент рабочего кода из проекта и обсудить его.
Во первых - свежий взгляд со стороны. Во вторых еще раз исполнить duck debugging, и самому проговорить свой код.
Возможно после этого и новые идеи пойдут. Не боги... как говорицца горшки обжигают.

Синтетические задачи наподобие обедающих философов или спящих парикмахеров интересны только теоретикам.
И далеки от практических задач которые могут возникнуть. Я к слову сам не уверен что смогу без подготовки
пояснить в чём проблема парикмахера и почему она вынесена как отдельный пункт среди проблем
concurrency/parallelism.

Вобщем нужна подготовка.
Да. к любому собесу в принципе неплохо бы подготовиться. просто с филосовскими вопросами можно не сойтись в некоторых аспектах с собеседующим. и если он малоадекватный, то ты в его глазах еще и дураком будешь впрочем, он в твоих будет самодуром как минимум.

это к теме лисковых и строгих убеждений.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839877
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСамый что ни на есть good way это на собеседовании показать фрагмент рабочего кода из проекта и обсудить его.
Во первых - свежий взгляд со стороны. Во вторых еще раз исполнить duck debugging, и самому проговорить свой код.
Возможно после этого и новые идеи пойдут. Не боги... как говорицца горшки обжигают.

Синтетические задачи наподобие обедающих философов или спящих парикмахеров интересны только теоретикам.
И далеки от практических задач которые могут возникнуть. Я к слову сам не уверен что смогу без подготовки
пояснить в чём проблема парикмахера и почему она вынесена как отдельный пункт среди проблем
concurrency/parallelism.

Вобщем нужна подготовка.
я кстати в какой то презенташке с тусы типа джейпойнта смотрел эту тему с философами и канкарренси. ну кароче ))) если долго втыкать то проблему наверное поймешь но это такая муть. ее хорошо знать для саморазвития и умения умничать на собесах.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839879
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это так же как обсасывание всяких принципов. которых не имеют четких требований и четких границ и вылупляется куча умников которые 100% уверены что именно их очерченные границы - самые правильные ))
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839892
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну они поэтому и называются философией разработки.

Я вот думаю если математик читает этот топик - он ни фига не поймет. И ещё больше убедится что программисты это шарлатаны. Любят по Фарисейски судить чужой код при этом опираясь на труды какой-то старухи Варвары.

Мдя. Для
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для математика нужна формула.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839907
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTДа. к любому собесу в принципе неплохо бы подготовиться. просто с филосовскими вопросами можно не сойтись в некоторых аспектах с собеседующим. и если он малоадекватный, то ты в его глазах еще и дураком будешь впрочем, он в твоих будет самодуром как минимум.

это к теме лисковых и строгих убеждений. разве не лучше для обеих сторон это выяснить быстро и сразу, на собеседовании ?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839911
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем согласен насчет "проблем". Я соглашусь, что можно не знать текста самой задачи и попросить ее переформуоировать в треминах межпроцессного взаимодействия, но как их решить то вы просто обязаны знать.
Проблема парикмахера(как правильно шарить состояние между процессами\потоками) - на знание мьютексов, чтобы программа работала надо синхронизироваться на состоянии и допускать в критические блоки только один процесс
Проблема философов(доступ к одним и тем же ресурсам из нескольких потоков\процессов) - на знание как избежать дэдлок(брать ресурсы в определенном порядке + таймаут).

Ну и в принципе - если вы заявляете что обладаете знаниями многопоточного программирования, то странновато не знать классику
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839913
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabandreykaTДа. к любому собесу в принципе неплохо бы подготовиться. просто с филосовскими вопросами можно не сойтись в некоторых аспектах с собеседующим. и если он малоадекватный, то ты в его глазах еще и дураком будешь впрочем, он в твоих будет самодуром как минимум.

это к теме лисковых и строгих убеждений. разве не лучше для обеих сторон это выяснить быстро и сразу, на собеседовании ?
Выяснить что?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839915
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
ну вот смотри,
человека спрашивают про разницу между объектами, созданными методо1 и методом2, а он начинает че-то гнать насчет женитьбы и философии.
100500 неадекват же!
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никПроблема философов(доступ к одним и тем же ресурсам из нескольких потоков\процессов) - на знание как избежать дэдлок(брать ресурсы в определенном порядке + таймаут).

Это как раз про то что "дефолтный порядок" породил дедлок.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839918
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
выяснить насколько комфортно будет вместь работаться, и сработаетесь ли вообще
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839919
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabmayton,
ну вот смотри,
человека спрашивают про разницу между объектами, созданными методо1 и методом2, а он начинает че-то гнать насчет женитьбы и философии.
100500 неадекват же!

Человека спрашивают про то как правильно создать объект в приложении, а он начинает задвигать про какие-то фабрики, синглтоны. HR, какого вы укурков опять допускаете?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabmayton,
ну вот смотри,
человека спрашивают про разницу между объектами, созданными методо1 и методом2, а он начинает че-то гнать насчет женитьбы и философии.
100500 неадекват же!
Я нарисовал ответ картинкой. И это лучший ответ на данный вопрос. Я гарантирую это (с).
Про старуху Лискову в принципе тоже верно но отвязано от реальности. У меня - реальный боевой пример.
Иногда проще нарисовать чем говорить. Это из той-же области что объяснить ребёнку ОТО.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839923
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabзабыл ник,
выяснить насколько комфортно будет вместь работаться, и сработаетесь ли вообще
В больших компаниях в основном собеседуют те кто свободен или есть желание\опыт по конкретным технологиям. Иногда набирают в новую команду и т.д, личностные качества должны проверяться HR, это вообще не предмет собеседоания. Конечно если собеседуемый ведет себя странновато я скажу об этом HR, но это никак не должно влиять на оценки
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839925
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonзабыл никПроблема философов(доступ к одним и тем же ресурсам из нескольких потоков\процессов) - на знание как избежать дэдлок(брать ресурсы в определенном порядке + таймаут).

Это как раз про то что "дефолтный порядок" породил дедлок.
Или я не понял тебя, или не дефолтный порядок породит дэдлок еще быстрее, поэтому я и говорю нужен порядок + таймаауты, одного недостаточно
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839926
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЧеловека спрашивают про то как правильно создать объект в приложении, а он начинает задвигать про какие-то фабрики, синглтоны. HR, какого вы укурков опять допускаете? необязательно, может человека спрашивают, что будет если создать объект неправильно
про синглтоны и фабрики вообще до вас никто не упоминал (это на тему укурков)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839930
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никНе совсем согласен насчет "проблем". Я соглашусь, что можно не знать текста самой задачи и попросить ее переформуоировать в треминах межпроцессного взаимодействия, но как их решить то вы просто обязаны знать.
Проблема парикмахера(как правильно шарить состояние между процессами\потоками) - на знание мьютексов, чтобы программа работала надо синхронизироваться на состоянии и допускать в критические блоки только один процесс
Проблема философов(доступ к одним и тем же ресурсам из нескольких потоков\процессов) - на знание как избежать дэдлок(брать ресурсы в определенном порядке + таймаут).

Ну и в принципе - если вы заявляете что обладаете знаниями многопоточного программирования, то странновато не знать классику
вот ты в двух словах всю интригу этих задачек объяснил и всё стало понятно.
я думаю многие понимают и как работает дедлок и как его избежать и для чего нужны мьютексы в шейред ресурсах. а вот всё остальное - это демагогия и обертка. скажи проще и всё будет проще понимать.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839931
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabзабыл никЧеловека спрашивают про то как правильно создать объект в приложении, а он начинает задвигать про какие-то фабрики, синглтоны. HR, какого вы укурков опять допускаете? необязательно, может человека спрашивают, что будет если создать объект неправильно
про синглтоны и фабрики вообще до вас никто не упоминал (это на тему укурков)
Ну судя по тому что вы пока с трудом умеете проводить аналогии и вычленять абстракции, предположу что ваш уровень где-то между джуниором и мидл. На таком уровне, вопросы типо как создать объект правильно допустимы и имеют смысл. С точки зрения сеньора и выше, одним упоминанием принципа из SOLID\паттерна\"проблемы философа" он просто смывает пласт вопросов и малозначительных деталей для обьяснения, что позволяет сразу перейти к следующей теме. Все эти принципы для того и придуманы чтобы коммуникация между девелоперами была быстрее и эффективнее, и если вы "тонете" в этом то есть два возможных обьяснения - либо неопытность либо нежелание учиться. Первый случай это вполне нормально для определенных позиций, но выведывая детали собеседующий потратит кучу времени и на остальные важные темы просто не хватит времени. И это прямым образом повлияет на отзыв о вас в первую очередь, потому что если не уверен лучше не бери(с)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839934
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTзабыл никНе совсем согласен насчет "проблем". Я соглашусь, что можно не знать текста самой задачи и попросить ее переформуоировать в треминах межпроцессного взаимодействия, но как их решить то вы просто обязаны знать.
Проблема парикмахера(как правильно шарить состояние между процессами\потоками) - на знание мьютексов, чтобы программа работала надо синхронизироваться на состоянии и допускать в критические блоки только один процесс
Проблема философов(доступ к одним и тем же ресурсам из нескольких потоков\процессов) - на знание как избежать дэдлок(брать ресурсы в определенном порядке + таймаут).

Ну и в принципе - если вы заявляете что обладаете знаниями многопоточного программирования, то странновато не знать классику
вот ты в двух словах всю интригу этих задачек объяснил и всё стало понятно.
я думаю многие понимают и как работает дедлок и как его избежать и для чего нужны мьютексы в шейред ресурсах. а вот всё остальное - это демагогия и обертка. скажи проще и всё будет проще понимать.

Согласен, я просто часто собеседую потому в курсе,\но когда не знаю что-то или вылетело из головы - то правильный ответ такой - "Извините, я уже немного устал, я точно слышал об этой проблеме и наверняка знаю как ее решать, но не помню точного описания. Будьте добры сформулируйте в терминах экзекьютор\поток бла-бла и скорее всего я скажу вам как ее решить". Если собеседующий сам не сведущ, то это еще и некислый троллинг получится.
Ну и да, знать все нельзя, это очевидно. Иногда я спрашиваю веши напрямую не относящиеся к задаче, и не жду особо ответа, но если вдруг человек ответил, то это просто огромный плюс, значит он обучается\интересуется
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839969
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

и как же ответить на вопрос изначально заданный ТС ??!
(для человека претендующего на джуниора-мидла)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839972
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabзабыл ник,

и как же ответить на вопрос изначально заданный ТС ??!
(для человека претендующего на джуниора-мидла)

Давайте, определимся, надо отвечать на вопрос ТС или на вопрос, который ему задавали на собеседовании? Вопрос ТС практически бессмысленен, он о форме, а не о содержании. Черт его знает что его там спрашивали и как он это понял. Вся тема суть попытка понять что он хотел узнать:) На собеседовании явно вопрос звучал не так.

Что могли спросить на собеседовании так это - что такое полиморфизм и приведи пример на Java. Джун и мидл по идее ответили бы что-то типо - ну это когда наследуешься и переопределяешь методы и по одной ссылке можно вызвать разные методы. Подкованный школяр сказал бы что полиморфизм — это способность обьекта использовать методы производного класса, который не существует на момент создания базового. Если бы спрашивали меня - я бы спросил в ответ а какой полиморфизм интересует - subtyping, parametric или ad-hoc? Думаю на этом бы тема полиморфизма закончилась.
ТС же скорее всего промямлил что-то невразумительное и собеседующие не поленились и стали вытягивать из него информацию, чтобы понять, понимает ли он полиморфизм хотя бы на уроне code monkey, привели пример, сделали сабклассы и начали задавать вопросы в стиле - а что вот тут вернется, а что если тут ссылку сделать на базовый класс. Вот и все
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839980
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я помню как то брал курс на юдеми про многопоточку и там как раз чел рассказывал про эти две задачки. если честно, то бJльшей мудоты я не видал. но наверное это зависит и от рассказчика. вроде еще в канкарренс ин практиз эту тему поднимали (не уверен)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839981
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...я про парикмахеров и философов
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839983
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmini.weblabзабыл ник,

и как же ответить на вопрос изначально заданный ТС ??!
(для человека претендующего на джуниора-мидла)
а какой полиморфизм интересует - subtyping, parametric или ad-hoc? Думаю на этом бы тема полиморфизма закончилась.

эх. еще бы это еще как то явно использовалось в реальных приложениях.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839986
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTзабыл никпропущено...

а какой полиморфизм интересует - subtyping, parametric или ad-hoc? Думаю на этом бы тема полиморфизма закончилась.

эх. еще бы это еще как то явно использовалось в реальных приложениях.
в скала как раз-таки все 3 и можно увидеть) Именно пересев на скалу я и понял чем они отличаются:)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839987
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTя помню как то брал курс на юдеми про многопоточку и там как раз чел рассказывал про эти две задачки. если честно, то бJльшей мудоты я не видал. но наверное это зависит и от рассказчика. вроде еще в канкарренс ин практиз эту тему поднимали (не уверен)
Да, это скорее всего рассказчик такой. Ну или на тот момент не в коня корм был. Иногда перечитываю чкнижки казавшиеся пару лет назад сложными и удивляюсь какие тривиальные вещи тут написаны.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39839994
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTпропущено...

эх. еще бы это еще как то явно использовалось в реальных приложениях.
в скала как раз-таки все 3 и можно увидеть) Именно пересев на скалу я и понял чем они отличаются:)
Кстати да. Типизация тоже в Java существует но не так ярко выражена. Нет такой математичной строгости
как в Scala или Haskell.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT...я про парикмахеров и философов
Да можно прорабоатать десятки лет в разработке конкурирующего ПО но так и не наступить на
ту ситуацию которую нарисовали в философской задаче. Хм.. как вариант кольцевой список ресурсов.
Но тоже.. редкость такая. В реальности коллекции ресурсов обычно имеют голову и хвост и поэтому
такой проблемы не бывает.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840108
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonзабыл никпропущено...

в скала как раз-таки все 3 и можно увидеть) Именно пересев на скалу я и понял чем они отличаются:)
Кстати да. Типизация тоже в Java существует но не так ярко выражена. Нет такой математичной строгости
как в Scala или Haskell.
для меня игры с тайпами в скале пока ограничиваются только алиасами.
глянул эту дичь с тем, как они расширили функционал дженериков - мне стало дурно и я всё закрыл. думаю, через полгодика еще раз открою и перечитаю. ))

кстати по дженерикам,
как сказал гослинг на маракане: есть два типа людей: одни не знают как обращаться с генериками, другие думают что знают.

в каких то базовых комбинациях я с этим всем еще дружу, как копнуть глубже - всё, приехали. в джаве я даж активно писал код на дженериках. в скале вот пока толи задач не было толи мозга не хватило. там где надо было хотел впилить в джава-стиле и обломился.

по тайпклассам курил вот это:

https://scalac.io/typeclasses-in-scala/

кстати там как раз и ссылаются на адхок подлиморфизм.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840109
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonandreykaT...я про парикмахеров и философов
Да можно прорабоатать десятки лет в разработке конкурирующего ПО но так и не наступить на
ту ситуацию которую нарисовали в философской задаче. Хм.. как вариант кольцевой список ресурсов.
Но тоже.. редкость такая. В реальности коллекции ресурсов обычно имеют голову и хвост и поэтому
такой проблемы не бывает.
а можно десятки лет проработать и не заниматься конкурирующим ПО в принципе. ну или на грани - делаем всё иммутабельным и идите вы в пень со своими локами и шаред ресурсами.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840116
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..ну десятки я канеш загнул. но 10 лет точно.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840122
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTmaytonпропущено...

Да можно прорабоатать десятки лет в разработке конкурирующего ПО но так и не наступить на
ту ситуацию которую нарисовали в философской задаче. Хм.. как вариант кольцевой список ресурсов.
Но тоже.. редкость такая. В реальности коллекции ресурсов обычно имеют голову и хвост и поэтому
такой проблемы не бывает.
а можно десятки лет проработать и не заниматься конкурирующим ПО в принципе. ну или на грани - делаем всё иммутабельным и идите вы в пень со своими локами и шаред ресурсами.
Можно акторы кодить 10 лет. Нормальный кейс? Да.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840129
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonandreykaTпропущено...

а можно десятки лет проработать и не заниматься конкурирующим ПО в принципе. ну или на грани - делаем всё иммутабельным и идите вы в пень со своими локами и шаред ресурсами.
Можно акторы кодить 10 лет. Нормальный кейс? Да.

Кодить можно. Если ты что то не используешь - это не твоя вина, но твоя проблема. Другие используют и имеют конкурентное преимущество, вот и все. Глупо обижаться на препода за то что он спрашивает то о чем ты не знаешь:)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840135
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmaytonпропущено...

Можно акторы кодить 10 лет. Нормальный кейс? Да.

Кодить можно. Если ты что то не используешь - это не твоя вина, но твоя проблема. Другие используют и имеют конкурентное преимущество, вот и все. Глупо обижаться на препода за то что он спрашивает то о чем ты не знаешь:)
Если мы имеем в виду задачу о философах - то это задача на "десерт". Или на сладкое.
Серъезно если собеседовать человека на проект? Нужно ли вообще его про это спрашивать.
Можно спросить в конце. Но не делать это фактором который определяет проф-пригодность
специалиста вообще.

P.S. - Карла Маркса знаете?
- Знаю. Дальше.
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840136
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTmaytonпропущено...

Кстати да. Типизация тоже в Java существует но не так ярко выражена. Нет такой математичной строгости
как в Scala или Haskell.
для меня игры с тайпами в скале пока ограничиваются только алиасами.
глянул эту дичь с тем, как они расширили функционал дженериков - мне стало дурно и я всё закрыл. думаю, через полгодика еще раз открою и перечитаю. ))

кстати по дженерикам,
как сказал гослинг на маракане: есть два типа людей: одни не знают как обращаться с генериками, другие думают что знают.

в каких то базовых комбинациях я с этим всем еще дружу, как копнуть глубже - всё, приехали. в джаве я даж активно писал код на дженериках. в скале вот пока толи задач не было толи мозга не хватило. там где надо было хотел впилить в джава-стиле и обломился.

по тайпклассам курил вот это:

https://scalac.io/typeclasses-in-scala/

кстати там как раз и ссылаются на адхок подлиморфизм.

Дженерики мне тоже тяжело заходили, из-за контраваринатности. Пока не разжевал сам себе пример с Function[-A, +B] и вдруг все стало ясно, понятно и очевидно. И кстати намного более интуитивнее чем в Java.

Ad-hoc и typeclasses это отдельный огромный пласт, без которого имплементацию ФП в скале просто не понять. Понятие идет иреративно, я пару раз думал что понял их, а потом мне открывался более глубинный смысл, примерно как с монадами. Но теперь если смотреть с позиции опыта - ничего там нету страшного и тяжелого. Typeclass - в классическом понимании описание capabilities которыми обладает класс, допустим нам надо ввести понятие эквивалентности
1) Мы делаем интерфейс\trait Equal[A] с методом equals(a1:A, a2:A):Bollean
2) Допустим нам в тесте надо проверять объекты на эквивалентность, мы пишем метод isSame[A:Equal](a1:A, a2:A):Boolean = a1.equal(a2) -------- этот код компилируется только если мы вызовем isSame на объектах, которые имеют capability Equal
3) допустим у нас есть case class User(name), в Java нам надо было бы делать так class User extends Equal, или вводить метод equals в класс Object с тайпклассами мы можем сделать пункт 4
4) implicit val userEquals = new Equal[User]{ def equals(u1:User, u2:User) = u1.name == u2.name}
5) теперь isSame(User("a"), User("b")) скопилируется а isSame(Profile(a), Profile(b)) --- нет
6) Таким образом мы расширили функционал, не притрагиваясь к изначальному коду User и не засирая его методами, ортогональными к понятию User.
7) А теперь представь сколько багов можно было словить во время компиляцияя если бы методы equals hashcode и тд не были бы обьявлены в Object
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840138
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonзабыл никпропущено...


Кодить можно. Если ты что то не используешь - это не твоя вина, но твоя проблема. Другие используют и имеют конкурентное преимущество, вот и все. Глупо обижаться на препода за то что он спрашивает то о чем ты не знаешь:)
Если мы имеем в виду задачу о философах - то это задача на "десерт". Или на сладкое.
Серъезно если собеседовать человека на проект? Нужно ли вообще его про это спрашивать.
Можно спросить в конце. Но не делать это фактором который определяет проф-пригодность
специалиста вообще.

P.S. - Карла Маркса знаете?
- Знаю. Дальше.

Ну тут конечно согласен. Такую задачу в принципе спрашивать не стоит, если только не собеседование в крутую контору помешанную на многопоточности. Но вот если кандидат скажет - а ну тут надо решать как в классическом решении задачи о философах - это ему огромный плюс в карму и следующий вопрос скорее всего снимается
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840144
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никmaytonпропущено...

Можно акторы кодить 10 лет. Нормальный кейс? Да.

Кодить можно. Если ты что то не используешь - это не твоя вина, но твоя проблема. Другие используют и имеют конкурентное преимущество, вот и все. Глупо обижаться на препода за то что он спрашивает то о чем ты не знаешь:)
это как собесы в яндексе на фронтендера. тебя требуют раскладывать деревья вдоль и поперек и исать лучшие алгоритмы со сложностью от 1 до н, но когда ты туда попадаешь - ты верстаешь сраные формочки и разворачиваешь докер образы (фронтендер да).

вот сколько раз и где меня ни спрашивали всю эту конкурентную дичь из книжки канкарренси ин практиз по факту НИГДЕ это не было нужно.

ну да понятие иметь надо я согласен чтоб уж совсем не антипаттернить. а на практике применять - ноль. НООООООЛЬ.

может мне с местами не везло. а может наоборот.

а вспомнил многопоточку....
...был как то код на проекте где экзекутор пораждал пачку экзекуторов которые выстреливали каждый еще одной пачкой и там короче треды крутились. такой фейерверк многопоточки по триггеру бабах. )))...
и это всё было на спринге и с хибером и вообще ааааааааааа. (тут выстрел из ружья в голову тому кто это сделал)
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840151
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..а щас мы едем на еще один левел ап:
.... серверлесс... и где там ваша хваленая многопоточка с парикмахерами и прочими персонажами?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840152
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTпропущено...

для меня игры с тайпами в скале пока ограничиваются только алиасами.
глянул эту дичь с тем, как они расширили функционал дженериков - мне стало дурно и я всё закрыл. думаю, через полгодика еще раз открою и перечитаю. ))

кстати по дженерикам,
как сказал гослинг на маракане: есть два типа людей: одни не знают как обращаться с генериками, другие думают что знают.

в каких то базовых комбинациях я с этим всем еще дружу, как копнуть глубже - всё, приехали. в джаве я даж активно писал код на дженериках. в скале вот пока толи задач не было толи мозга не хватило. там где надо было хотел впилить в джава-стиле и обломился.

по тайпклассам курил вот это:

https://scalac.io/typeclasses-in-scala/

кстати там как раз и ссылаются на адхок подлиморфизм.

Дженерики мне тоже тяжело заходили, из-за контраваринатности. Пока не разжевал сам себе пример с Function[-A, +B] и вдруг все стало ясно, понятно и очевидно. И кстати намного более интуитивнее чем в Java.

Ad-hoc и typeclasses это отдельный огромный пласт, без которого имплементацию ФП в скале просто не понять. Понятие идет иреративно, я пару раз думал что понял их, а потом мне открывался более глубинный смысл, примерно как с монадами. Но теперь если смотреть с позиции опыта - ничего там нету страшного и тяжелого. Typeclass - в классическом понимании описание capabilities которыми обладает класс, допустим нам надо ввести понятие эквивалентности
1) Мы делаем интерфейс\trait Equal[A] с методом equals(a1:A, a2:A):Bollean
2) Допустим нам в тесте надо проверять объекты на эквивалентность, мы пишем метод isSame[A:Equal](a1:A, a2:A):Boolean = a1.equal(a2) -------- этот код компилируется только если мы вызовем isSame на объектах, которые имеют capability Equal
3) допустим у нас есть case class User(name), в Java нам надо было бы делать так class User extends Equal, или вводить метод equals в класс Object с тайпклассами мы можем сделать пункт 4
4) implicit val userEquals = new Equal[User]{ def equals(u1:User, u2:User) = u1.name == u2.name}
5) теперь isSame(User("a"), User("b")) скопилируется а isSame(Profile(a), Profile(b)) --- нет
6) Таким образом мы расширили функционал, не притрагиваясь к изначальному коду User и не засирая его методами, ортогональными к понятию User.
7) А теперь представь сколько багов можно было словить во время компиляцияя если бы методы equals hashcode и тд не были бы обьявлены в Object
ты прям крут. я серьезно. вот скажи мне, сколько времени у тебя ушло на осознание этого от начала знакомства с функциональщиной чуть глубже чем с нуля?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840164
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTты прям крут. я серьезно. вот скажи мне, сколько времени у тебя ушло на осознание этого от начала знакомства с функциональщиной чуть глубже чем с нуля?
Сложно сказать, я скалу стал смотреть лет 8 назад, но тогда вообще не понял функциональщины. Потом еще были подходы через пару лет. Ну а года 3 назад проект новый нарисовался на спарке и скале, решил туда запрыгнуть, потому как скалу вообще никто не знал. Где-то месяцев 8 я читал статьи про ФП на скала и понимал только введение:) Потом прочитал Functional Programming in scala и Functional and Reactive Domain Modeling - первая просто люто полезная книжка, но не надейся ограничиться только чтением - там надо делать упражнения тоже, вот там и научишься. Вторая книга - ФП проект в реалворлд. Еще полгода и я читал статьи уже до выводов, иногда пропукая куски хаскелл - кода. ну а еще через полгода я попробовал провести тренинг внутри компании, и вот там уже сложилось - при попытках обьяснить что такое flatMap, пришлось самому осознать это.
Ну если сложить то нужные книги + проект на скале + полтора года - думаю выйти на хороший уровень реально
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840222
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ту вторую книжку по скале совсем недавно по случаю на озоне купил правда на русском зато дешево.
проект на скале есть, скоро год будет как я с ним вожусь, но он ну как сказать во первых за меня его начали, во-вторых, он довольно простой из разряда взял джейсон -пложил джейсон, таким проектом вон надо асв78 заниматься. ему будет интересно. а где там мысли развернуться я лично хезе. ))
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840266
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT..а щас мы едем на еще один левел ап:
.... серверлесс... и где там ваша хваленая многопоточка с парикмахерами и прочими персонажами?
А серверлесс чей? Амазонский? Гуглячий?
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840267
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Амазоновский пусть будет. С гуглом не знаком
...
Рейтинг: 0 / 0
Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
    #39840280
pgm300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создать объект как Calculator cal = new My_Calculator() можно, но это должно преследовать какую то цель. Разница с Calculator cal = new Calculator() конечно есть. Как минимум
1. Как уже писали, будет больше накладных расходов при создании объекта extended класса. В данном случае разница не такая большая, а если бы вам вздумалось хранить в объекте My_Calculator несколько массивов на 100 элементов для какой нибудь истории операций?
2. Объект cal будет иметь ссылку типа Calculator, но сам объект при этом будет типа My_Calculator, и вести себя как My_Calculator. Т.е. вызвать у cal дополнительные методы My_Calculator вы не сможете, у вас область видимости ограничена Calculator. Т.е. умножение вызвать не получится.
3. из п.2 следует, что если в My_Calculator будут переопределены методы базового класса (например метод addition будет выводить на экран надпись "Hello"), то при вызове cal.addition вы получите этот самый Hello. Это может ввести в заблуждение либо вас, либо вашего коллегу, который возможно будет ждать от объекта cal базового поведения не заметив/забыв что у вас там объект extended класса. В данном случае переопределения нет, но ведь это всегда может произойти.
4. наверняка есть что то еще, пп 1 - 3 это первое, что приходит в голову.

Исходя из пп 1-4 возникает вопрос - зачем так надо делать?
Должны быть какие то причины.

Простая аналогия. Представьте что у вас есть телевизор А (простой телевизор), с функцией 1 - "показать кино" и extended телевизор Б (телевизор для домохозяек). В телевизоре Б функция 1 переопределена на "показать шоу Малахова" и добавлена функция 2 - "показать Дом2". Вы даете человеку телевизор Б (по каким то причинам у вас есть именно он, а не простой телевизор), но не хотите, чтобы он совсем сошел с ума и даете ему пульт от телевизора А на котором всего 1 кнопка. Соответственно "Дом - 2" он включить не сможет (кнопки нет!). Но вместо кино ему придется смотреть шоу Малахова.
Телевизор в данном случае - это объект класса "телевизор для домохозяек" а пульт - это ссылка типа "простой телевизор".

Аналогия довольна топорная, первое что пришло в голову.

Есть возможность привести ссылку Calculator к типу My_Calculator но это уже другая история..
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]