В настоящее время я работаю через Code Complete, и слово «интерфейс» продолжает появляться! Я пытаюсь понять, что такое интерфейс. Можете ли вы определить этот термин? И что на самом деле составляет «интерфейс класса»?Что такое интерфейс класса?
ответ
Я думаю, что это хороший способ определить интерфейс выглядит следующим образом
Интерфейс представляет собой договор, определяющий набор методов, полей и свойств, которые будут доступны на любом реализующего объект
Фактическая реализация от языка к языку может иметь смешные небольшие различия, но принцип имеет место.
Я рассмотрел возможность добавления реализованных интерфейсов в список выше, но оставил его, потому что он казался немного специфичным для языка. Я думаю, что все в порядке, потому что конечный эффект почти такой же. Взаимодействие с дополнительными интерфейсами - это просто добавление в контракт дополнительных методов, полей и свойств.
Это внешнее лицо миру. Обычно это набор общедоступных методов (участников), которые он предоставляет.
Технически, однако они были бы 2 разные вещи
интерфейс будет публичным договором. например
interface ILogger
{
void Log(String str);
}
класс будет тогда «реализовать» этот интерфейс - таким образом, говоря, что она обеспечивает такую функциональность
class ConsoleLogger : ILogger
{
public ConsoleLogger() { ... }
public void Log(String str)
{
Console.WriteLine("Console Logger " + str);
}
// private stuff
}
Пользователи этого сервиса/интерфейса не должны касаться себя с тем, как она реализуется или кто его реализует? В зависимости от интерфейса, фактическая реализация может быть переключена по желанию.
Интерфейс - это определение набора методов, которые класс может использовать. В основном он используется для полиморфизма интерфейса.
В общем, интерфейс - это просто «то, как класс выглядит для остального мира».
Например, этот класс в Java:
class MyClass {
private string data;
private string Foo() {...}
public void Bar(string s){...}
}
можно сказать, есть только функция Bar в его интерфейсе. Внутри у него есть несколько других членов, но они частные, поэтому они не видны внешнему миру.
Более обычно, интерфейсы также конкретные типы в языке, например, в следующем, МойКласс реализует интерфейс IMyClass:
interface IMyClass {
public void Bar(string s);
}
class MyClass implements IMyClass {
private string data;
private string Foo() {...}
public void Bar(string s){...}
}
Интерфейс теперь выражается в коде, так что любое время переменной ожидается, что тип IMyClass будет использовать объект типа MyClass, поскольку он реализует правильный интерфейс.
Интерфейс к классу - это «публичное лицо», которое могут видеть другие классы. Он отделяет реализацию класса от того, как он взаимодействует с другими классами. Таким образом, различные реализации могут быть заменены, а другим классам не нужно ничего знать о том, что стоит за интерфейсом.
Интерфейс может включать как данные, так и функции.
Интерфейс подобен классу, но не совсем. Он имеет сходные черты, такие как класс, но это не интерфейс. Интерфейс имеет переменные и методы, «так же, как класс, но методы, объявленные в интерфейсе, по умолчанию абстрактны (только подпись метода, без тела)».
Интерфейсы имеют два определения. Это зависит от того, в каком контексте используется термин «Интерфейс».
- Интерфейс классов относится ко всем реализованным общедоступным методам класса.
Интерфейс как тип. используя интерфейс keyword для объявления интерфейса.
interface Movable{ moveStraight(); moveLeft(); moveRight(); stop(); }
Итак, теперь класс, скажем, автомобиль может реализовать интерфейс Movable. Это то, что известно как контракт. Если класс Car реализует интерфейс Movable, Car гарантирует предоставление реализаций для всех методов, объявленных в объявлении Movables .
В заключение, как правило, интерфейс рассматривается как тип (определение 2) в контексте программирования конкретного языка. Первое определение вы найдете в меньших количествах, как правило, в теоретическом или дизайнерском контексте.
Классический пример реальной жизни интерфейса - это управление автомобилем.
Разрыв, газ и колесо будут интерфейсом. Механизм и другие технические аспекты были бы воплощением. Эти механические аспекты могут измениться, мы не знали бы, потому что наш интерфейс остается тем же.
Это сила интерфейса, он скрывает детали реализации, поэтому мы можем работать на более высоком уровне абстракции. Мы можем напрямую использовать функциональные возможности интерфейса, не беспокоясь о том, как реализуется код под ним.
- 1. Что такое интерфейс?
- 2. Что такое свободный интерфейс?
- 3. Что такое интерфейс?
- 4. Что такое частный интерфейс?
- 5. Что такое интерфейс маркера?
- 6. Что такое интерфейс IServiceLocator?
- 7. Что такое интерфейс Duck Typing?
- 8. Что такое "ванильный веб-интерфейс"?
- 9. Что такое интерфейс в Java?
- 10. Что такое интерфейс соответствия меток?
- 11. Что такое интерфейс API OpenGL?
- 12. Что такое интерфейс верхнего уровня в go?
- 13. Что такое контейнер класса?
- 14. Что такое расширение класса?
- 15. Что такое сложность класса
- 16. Что такое возврат класса?
- 17. Что такое ссылочный объект в интерфейс?
- 18. Что такое аксиома общего класса?
- 19. Что такое использование этого класса?
- 20. Что такое подход класса php5?
- 21. Что такое объект класса (java.lang.Class)?
- 22. Что такое строгая загрузка класса?
- 23. Что такое параметризованный вызов класса
- 24. Что такое эквивалент класса экземпляровRespondToSelector?
- 25. Что такое «Интерфейс Builder Cocoa Touch Tool»
- 26. Что такое пустой интерфейс без методов?
- 27. Что такое самоопределяющийся ИНТЕРФЕЙС в fortran?
- 28. Знает ли IL, что такое ИНТЕРФЕЙС?
- 29. Что такое API-интерфейс Android 4.0?
- 30. Что такое интерфейс/платформа api.ai и wit.ai?
Спасибо всем за ответы. Теперь я понимаю этот термин. – 2009-06-21 10:17:37
Много полезной информации в: http://stackoverflow.com/questions/1027837/implementing-interface-in-code/1027913#1027913 тоже. – StuperUser