170 похожих чатов

Ребят, а вот смотря на последние неты, где в интерфейсах

можно логику описывать и реализовывать, какое отличие все же остались у абстрактного класса от интерфейса?

29 ответов

20 просмотров

ужасное мракобесие - сувать реализацию в интерфейсы

Класс может реализовать несколько интерфейсов, а наследоваться только от одного класса. Так было и так есть даже в послднем .нете. Кроме того, многие DI контейнеры рассчитаны на работу с интерфейсами, если тебе важно их использовать, выбора особо нет

Я на собесах отвечаю так. За общим различиям с старых версий конечно. Интерфейсы используются как гарантированное предоставление реализации общего интерфейса определенного функционала. IDispose IEnumerable, где интерфейс отвечает за строгий регламент функционала. и каждый экземпляр обязан его реализовывать. А абстрактный класс используется для выявления общей иерархии класса, часто с предоставлением гарантии отсутствия экземпляра базовых обьектов. Вроде так {сотрудник абстрактный класс, клерк офисный наследует класс сотрудника} в данном случаи неопределнного сотрудника быть не может, и мы не хотим наличия его экземпляров.

Просто шарпы пытаются наконец-то ввести ООП в язык в полном объеме. Это попытка сделать множественное наследование только через жопу.

Warstone
Просто шарпы пытаются наконец-то ввести ООП в язык...

множественное наследование - тот еще способ выстрела себе в ногу)

Pavel Trifonov
множественное наследование - тот еще способ выстре...

Нежелание использовать множественное наследование - это как использовать писюн на половину.

еще скажи композиция

Warstone
Нежелание использовать множественное наследование ...

да как-то жили без этого и всем норм было

semptra
да как-то жили без этого и всем норм было

Хреново жили. Каждый раз когда ты используешь интерфейс ты расписываешься в том что твой язык говно и не поддерживает множественного наследования.

Warstone
Хреново жили. Каждый раз когда ты используешь инте...

Зачем ты в чате такой плохой платформы тогда сидишь?)

semptra
Зачем ты в чате такой плохой платформы тогда сидиш...

Когда пет проект делал - пришлось брать или шарпы или плюсы, а плюсы были более медленные по разработке.

Mikhail-Tushev Автор вопроса

жить можно с чем угодно, главное что бы удобно в разработке было, мне, к примеру, требовалось вот такое множественное наследование классов только раза 2 и то интерфейсы вполне покрывают эту проблему

Mikhail Tushev
жить можно с чем угодно, главное что бы удобно в р...

Ну вот могу рассказать как мы используем это... У нас это превратилось, фактически, в миксины и, в лучших традициях новомодных веяний но задолго до того как они стали новомодными, у нас сам конечный класс, из которого будет расти синглтон программы, при старте на основе конфига собирает себе наследование (вернее не конечный, а предпоследний). Очень удобно получается.

Warstone
Ну вот могу рассказать как мы используем это... У ...

Какая-то дичь. зачем все это? "Собирает себе наследование"

Nickolay Z
Какая-то дичь. зачем все это? "Собирает себе насле...

шо бы было чем перед джунами пришедшими понтоваться)

простите, что ? обычно вы подняли конфиг с сервера и на его основании приложение сконфигурировалось. А у вас тут какие-то подобъекты, ооп. Что такое "базовый класс сервера" ?

при старте сервера, на основе данных из конфига, через DI прокидываются нужные классы. и никаких фабрик не нужно тогда

Yuryi
простите, что ? обычно вы подняли конфиг с сервера...

Ну смотрите... Допустим у вас микро (или не сильно микро) сервисная архитектура. У вас в одном из базовых классов есть методы работы с шиной данных (транспорт неважен). Так-же у вас есть класс, который выступает веб сервером. Как вы строите архитектуру? В классе текущего сервера создаете свойство для траснпорта и свойство для веб сервера, дальше их настраиваете, обмениваетесь коллбеками или как-то по другому связываете логику... В рантайме на старте. Теперь если-бы у вас было множественное наследование - вы-бы засунули 2 этих класса себе в родителей и связали-бы все уже на этапе компаилтайма и у вас небыло-бы this.Transport.sendMessage(...), а this.sendMessage(...)

Pavel Trifonov
при старте сервера, на основе данных из конфига, ч...

Смешно. DI - это фабрика 2.0, поэтому вы сказали оксюморон.

все что вы написали понятно, непонятно только что такое класс текущего сервера. Накидайте что там. Потому что пока непонятно что у вас там кроме адаптера к шине лежит

Yuryi
все что вы написали понятно, непонятно только что ...

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

C чего вы решили, что GC вешается? Она даже умеет в закольцованные ссылки.

Nickolay Z
C чего вы решили, что GC вешается? Она даже умеет ...

Она-то умеет. Вешается она просчитывать это все.

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

Сергей (F L )
На сколько знаю, в юнити там все грустно с этим. и...

Ну это проблема текущего кора и нежелания делать нормальный ABI, а без него совместное владение объектами работает через жопу. Но владение объектами нужно только для GC, так что да.. Это проблемы GC

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта