powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
25 сообщений из 64, страница 1 из 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
25 сообщений из 64, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Создание объекта Java Сабкласс = new Родитель(); разница с Сабкласс = new Сабкласс ();
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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