Какие другие языки позволяют программистам использовать интерфейсы в качестве функциональных параметров?

Позволь мне объяснить:

Я знаю, что на Java вы можете делать такие вещи:

int myMethod(Burnable obj){ /*do stuff that's only applicable if the argument implements the Burnable *interface */ } 

Мне больше нравится программирование на PHP , и я не уверен , могу ли я это сделать и на PHP .

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

спасибо

Все статически типизированные языки (C, C ++, Java, Objective-C, Ada и многие другие) позволяют указывать типы параметров функции. Подмножество из них допускает перегрузку (с несколькими разными функциями с тем же именем, но с разными типизированными параметрами). Начиная с PHP5, можно указать типы параметров, используя тип hinting для проверки того, что функция вызывает параметры прохождения ожидаемого типа; однако PHP не поддерживает перегрузку (хотя вы можете заставить функции принимать несколько разных типов, а затем проверять типы и отправлять разные версии по типу).

Все стандартные языки CLR (C #, VB.NET, F #) поддерживают использование интерфейсов. У Haskell есть модели, которые выполняют аналогичную функцию.

Это допускает каждый объектно-ориентированный язык. Они отличаются тем, как они произносят «интерфейс». В C ++ это всего лишь особый вид класса, где каждый член является «чистым виртуальным» (теперь он называется «абстрактным»). В C # это похоже на java. Например, в динамически типизированных языках, PHP, Python и Ruby он просто неявный (т. Е. Интерфейс, к которому должен соответствовать аргумент, явно не указан явно, но в тексте все еще есть «интерфейс»).

Возможность сделать это связана с принципом замещения Лискова, и это один из основных принципов объектно-ориентированного программирования. Рад, что вам это нравится 🙂