В общем, интерфейс - это просто "как класс выглядит для остального мира".
Например, этот класс в Java:
class MyClass {
private string data;
private string Foo() {...}
public void Bar(string s){...}
}
Можно сказать, что
имеет только функцию Bar в своем интерфейсе. Внутри у него есть несколько других участников, но они закрыты, поэтому они не видны внешнему миру.
Чаще всего интерфейсы также являются специфическими типами в языке, например, в следующем MyClass реализует интерфейс 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, поскольку он реализует правильный интерфейс.