Значит сказать вам нечего.Активист, зачем? Я обосновал свое мнение, что ты у нас не последняя инстанция.
Нижний НовгородИз Киева, но слова и аргументы 1 в 1 мои. Я не верю что это совпадение. Какой город?
В дополнение мое имхо, интерфейсы это гарантия реализации того или иного набора методов и возможность определить наличие реализации этих методов в конкретном объекте, например, ситуация с интераторами ясно дает понять где и как их применять.Вот бывает же такие совпадения.
Ответ один - интерфейсы это понятие больше филосовское. Между интерфейсом и абстрактным классом нет разницы как таковой(как правильно сказали в С++ для интерфейсов юзают классы).
Множественное наследование вообще не относиться к этому вопросу. Никак. Вообще.
Интерфейс это контракт который говорит как можно юзать этот класс. Без него любой класс вообще нельзя юзать, ибо он закрыт от внешнего мира инкапсуляцией.
Причем интерфейс может быть пустым - маркером. Он говорит что этот класс можно использовать как например ICollectable. Но не иметь не одного метода. Юзается для сигнатур.
А абстрактный класс - это лишь общая реализация. Она ничего не говорит о там как можно юзать этот класс. Это внутренняя часть класса. А интерфейс внешняя.
Как то так.
это гарантия реализации того или иного набора методов
abstract function getSome(){}
Как раз относится. Потому что объект может включать в себя как Interator, так и Serializable например, а вот с абстрактным классом вы сделать это уже не сможете.Тоже гарантирует что в конкретном классе будет конкретный метод и его реализация.PHP:abstract function getSome(){}
Так что нет. Это тоже не относится к данному вопросу.
И что? Занаследовал два абстрактных класса Iterator и Serializable и профит. Не?Как раз относится
нет, нужно через промежуточный классИ что? Занаследовал два абстрактных класса Iterator и Serializable и профит. Не?
interface Foo {}
interface Bar {}
class Test implements Foo, Bar {}
//
abstract class Foo {}
abstract class Bar {}
class Proxy extends Foo {}
class Proxy2 extends Bar {}
class Test extends Proxy2 {}
«наследование интерфейса» отличается от «наследования реализации»
фабричный метод определяет интерфейс для создания объектов
Конечно, роль контроллера в MVC у каждого своя )) (влом искать тот эпический спор), я это уважаю, но в данном случае PHP ничем не отличается от java. Было бы неплохо аргументировать доводы примерами и цитатами признанных источников, а не личным мнением.Текучий интерфейс придуман Эриком Эвансом и Мартином Фаулером — способ реализации, нацеленный на повышение читабельности исходного кода программы.
Прочитайте хоть пару первых абзацев мануала, которые уже перевели на русский, где четко написано зачем нужны интерфейсы.Тоже гарантирует что в конкретном классе будет конкретный метод и его реализация.PHP:abstract function getSome(){}
Так что нет. Это тоже не относится к данному вопросу.
И наследуются, и реализуются. 6й абзац в мануале по твоей ссылке.PS: интерфейсы не наследуются, а имплементируются.
PSS: интерфесы - это не сферическое абстрактное понятие, а конкретный механизм для реализации конкретных задач.
Хм.. Как-то мы по разному вами читаем русский язык.Активист, Я тебе про Фому, ты мне - "прочитай про Ерему".
Из определения в мануале "Интерфейсы позволяют указывать, какие методы и свойства должен включать класс" прямо не следует, что "интерфейсы нужны для того чтобы указывать ...".
..
И наследуются, и реализуются. 6й абзац в мануале по твоей ссылке.
И сферическое понятие в вакууме, и конкретный элемент языка. Так часто бывает.
PS. Интерфейс может быть унаследован от другого базового интерфейса, но в объект (класс) они все же имплементируютсяИнтерфейсы объектов позволяют создавать код, который указывает, какие методы и свойства должен включать класс, без необходимости описывания их функционала.