Какие другие языки позволяют программистам использовать интерфейсы в качестве параметров функции? - PullRequest
1 голос
/ 18 марта 2011

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

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

int myMethod(Burnable obj){

 /*do stuff that's only applicable if the argument implements the Burnable 
  *interface
  */
}

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

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

Спасибо

Ответы [ 3 ]

4 голосов
/ 18 марта 2011

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

1 голос
/ 18 марта 2011

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

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

1 голос
/ 18 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...