2009-06-20 2 views
8

В настоящее время я работаю через Code Complete, и слово «интерфейс» продолжает появляться! Я пытаюсь понять, что такое интерфейс. Можете ли вы определить этот термин? И что на самом деле составляет «интерфейс класса»?Что такое интерфейс класса?

+0

Спасибо всем за ответы. Теперь я понимаю этот термин. – 2009-06-21 10:17:37

+0

Много полезной информации в: http://stackoverflow.com/questions/1027837/implementing-interface-in-code/1027913#1027913 тоже. – StuperUser

ответ

8

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

Интерфейс представляет собой договор, определяющий набор методов, полей и свойств, которые будут доступны на любом реализующего объект

Фактическая реализация от языка к языку может иметь смешные небольшие различия, но принцип имеет место.

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

1

Это внешнее лицо миру. Обычно это набор общедоступных методов (участников), которые он предоставляет.

Технически, однако они были бы 2 разные вещи

интерфейс будет публичным договором. например

interface ILogger 
{ 
    void Log(String str); 
} 

класс будет тогда «реализовать» этот интерфейс - таким образом, говоря, что она обеспечивает такую ​​функциональность

class ConsoleLogger : ILogger 
{ 
    public ConsoleLogger() { ... } 
    public void Log(String str) 
    { 
    Console.WriteLine("Console Logger " + str); 
    } 
    // private stuff 
} 

Пользователи этого сервиса/интерфейса не должны касаться себя с тем, как она реализуется или кто его реализует? В зависимости от интерфейса, фактическая реализация может быть переключена по желанию.

0

Интерфейс - это определение набора методов, которые класс может использовать. В основном он используется для полиморфизма интерфейса.

8

В общем, интерфейс - это просто «то, как класс выглядит для остального мира».

Например, этот класс в 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, поскольку он реализует правильный интерфейс.

1

Интерфейс к классу - это «публичное лицо», которое могут видеть другие классы. Он отделяет реализацию класса от того, как он взаимодействует с другими классами. Таким образом, различные реализации могут быть заменены, а другим классам не нужно ничего знать о том, что стоит за интерфейсом.

Интерфейс может включать как данные, так и функции.

0

Интерфейс подобен классу, но не совсем. Он имеет сходные черты, такие как класс, но это не интерфейс. Интерфейс имеет переменные и методы, «так же, как класс, но методы, объявленные в интерфейсе, по умолчанию абстрактны (только подпись метода, без тела)».

http://beginnersbook.com/2013/05/java-interface/

0

Интерфейсы имеют два определения. Это зависит от того, в каком контексте используется термин «Интерфейс».

  1. Интерфейс классов относится ко всем реализованным общедоступным методам класса.
  2. Интерфейс как тип. используя интерфейс keyword для объявления интерфейса.

    interface Movable{ 
        moveStraight(); 
        moveLeft(); 
        moveRight(); 
        stop(); 
    } 
    

    Итак, теперь класс, скажем, автомобиль может реализовать интерфейс Movable. Это то, что известно как контракт. Если класс Car реализует интерфейс Movable, Car гарантирует предоставление реализаций для всех методов, объявленных в объявлении Movables .

В заключение, как правило, интерфейс рассматривается как тип (определение 2) в контексте программирования конкретного языка. Первое определение вы найдете в меньших количествах, как правило, в теоретическом или дизайнерском контексте.

0

Классический пример реальной жизни интерфейса - это управление автомобилем.

Разрыв, газ и колесо будут интерфейсом. Механизм и другие технические аспекты были бы воплощением. Эти механические аспекты могут измениться, мы не знали бы, потому что наш интерфейс остается тем же.

Это сила интерфейса, он скрывает детали реализации, поэтому мы можем работать на более высоком уровне абстракции. Мы можем напрямую использовать функциональные возможности интерфейса, не беспокоясь о том, как реализуется код под ним.

Смежные вопросы