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

Доброй ночи. вопрос в частности по ООП и наверное принципов подстановки

Барбары Лисков

я хочу, чтобы в интерфейсе в методах были прописаны в качестве параметров интерфейсы в качестве типов данных. некоторые примеры находил, но почему-то по такому же принципу реализовать не получилось. одна и та же ошибка: Declaration of ..имя класса, метода и аргументы с классом... must be compatible with другой интерфейс. В общем ругается и говорит, что классы должны быть совместимы. По факту он (используемый класс в аргументах метода) реализует указанный интерфейс, но все равно не работает.

Пример:
interface IParam {}

interface IMethod{
public function methodInterface(IParam $param);
}

class Param implements IParam {}

class Method implements IMethod {
public function methodInterface(Param $param){
return $param->value;
}
}

Должно ли такое работать или есть какие-то подводные камни?

1 ответов

16 просмотров

принцип подстановки Лисков - require no more, promise no less ты нарушаешь первую часть этого правила твоя реализация начинает требовать больше, чем описано в интерфейсе

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
18
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
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
Карта сайта