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

То есть, интерфейс и абстрактный класс == абстрактный? они на

одном уровне и могут не наследовать методы?

14 ответов

41 просмотр

Наследование методов у интерфейса было бы странным

As-Lan Автор вопроса
As Lan
ну я имел ввиду про абстрактные классы

Вы запутали и себя и меня Я предлагаю почитать книжку Хотите посоветую прикольную ? Сам читал естессно

As-Lan Автор вопроса
Владимир Свешников
Вы запутали и себя и меня Я предлагаю почитать кни...

ну было бы неплохо, только не доку пхп пожалуйста, я там и читал про ооп

As Lan
ну было бы неплохо, только не доку пхп пожалуйста,...

Паттерны проектирования (2018) Автор: Эрик Фримен, Элизабет Фримен Переиздание Как по мне объясняет 2 в одном

Абстрактный класс мы не можем использовать напрямую. Только его конкретный класс наследник. Тогда система и заставит нас где-то метод определить.

As-Lan Автор вопроса
Дмитрий Елисеев
Абстрактный класс мы не можем использовать напряму...

нет же, я не про это) - Вот допустим вы создали Интерфейс парсера сайта ParserInterface.php, внутри вы создали метод parseUrl() - Теперь создаете абстрактный класс PornhubService.php который имплиментирует ParserInterface. Вопрос: почему абстрактный класс PornhubService может пренебречь правилами и не создавать внутри себя метод parseUrl() которого требует Интерфейс. Ведь все методы интерфейса должны быть описаны в дочерних классах

As Lan
нет же, я не про это) - Вот допустим вы создали Ин...

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

As-Lan Автор вопроса
Дмитрий Елисеев
Про это. У абстрактного класса обязательно будет н...

это то я знаю что заставит) вопрос почему?) ведь Абстрактный класс имплментирует Интерфейс)) может есть статья про это? в доках ПХП про это не упомянули, или я плохо смотрел

As Lan
это то я знаю что заставит) вопрос почему?) ведь А...

Потому что из абстрактного нельзя сделать объект через new. Он как полуфабрикат/запчасть, а не как полноценный класс.

As Lan
это то я знаю что заставит) вопрос почему?) ведь А...

interface A { function a() function b() } abstract class B imp A { } abstract class C extends B { function a() } class D extends C { function b() }

As-Lan Автор вопроса
Дмитрий Елисеев
Потому что из абстрактного нельзя сделать объект ч...

ааа, я поняяял, "не полноценный" значит)) в доках пишут "методы интерфейса должны быть реализованы в классах" - я просто докопался к словам получается)) извиняюсь что запарил вас))

Дмитрий Елисеев
interface A { function a() function b() } abs...

Суть правила в том, чтобы нельзя было создать объект без какого либо метода из интерфейса. Абстрактных классов может быть сколько угодно. Хоть с методами, хоть без. Создать объект можно только начиная с класса D. Поэтому правило только в нём начнёт проверять методы.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта