Что подразумевается под реализацией интерфейса?
Возможно, будет лучше, если мы начнем с того, что такое интерфейс, а затем перейдем к тому, что означает реализация одного.
Пример № 1:
Каждый Макдональдс в мире имеет определенные общие черты.Фактически, если вы хотите запустить франшизу McDonald's, вы должны следовать их правилам франчайзи:
- Должны продавать Биг Мак.
- Рестораны должны иметь Большой M
- Должен платить франчайзи.
- Рестораны должны быть чистыми (sic !?) всегда.
Это их правила,Это в договоре.Каждый ресторан обязан следовать этому контракту.Каждый ресторан немного отличается, но они одинаковы, когда речь идет о вышеуказанных правилах.
Это также очень хорошая вещь для клиента.Если вы заходите в какой-либо ресторан McDonald's в мире, вы наверняка знаете, что можете купить Биг Мак.
Какое отношение McDonald's имеет к интерфейсам?
«Интерфейс» - это не более чем контракт.Любой ресторан, который «реализует» или подписывает договор, обязан его соблюдать.Или, другими словами, любой ресторан, который реализует интерфейс франчайзи McDonald's, обязан следовать ему.
Почему он называется интерфейсом IMcDonald вместо интерфейса McDonald?
КогдаКогда вы называете интерфейс, обычно имя начинается с «I».
Пример # 2
Все плоскости в мире имеют определенные общие черты, независимо от того, какой тип.Другими словами, все они реализуют интерфейс Iplane.
Интерфейс IPlane предусматривает, что любая плоскость, в которой он реализован, должна иметь:
- Два крыла
- двигатель
- и он должен летать
Поэтому, если Boeing 737 следует этим правилам, как клиент, вы гарантированно убедитесь, что ваша покупка будет иметь крылья и будет летать.Вот пример того, как Boeing 737 реализует вышеуказанный интерфейс:
public interface IPlane
{
void Fly();
void HasTWoWings();
void Engine();
}
class Boeing737 : IPlane // <-------------- the Boeing 737 implements the interface
{
// this means that the Boeing737 MUST have a fly, hastwowings and an engine method.
// the interface doesn't specify HOW the plane must fly. So long as it does fly
// the compiler doesn't care.
public void Fly()
{
Console.WriteLine("Come fly with me, let's fly, let's fly awaaaaaaaay");
}
public void HasTWoWings()
{
Console.WriteLine("I've got two wings");
}
public void Engine()
{
Console.WriteLine("BRrrrrrrrooooooooooooooooooooooooooooooooom!");
}
}
Надеюсь, это поможет вам.
Так что же это значит?
Это очень удобно, если вы, например, пассажир, который хотите забронировать самолет.Вы не уверены, какие самолеты будут доступны для вас.И вам все равно, если они самолеты, и они летают, имеют два крыла и двигатель.Когда вы в аэропорту, вы можете получить «Боинг» или аэробус, или «Стиг», но вы знаете, что независимо от того, какой самолет вы получите, они будут выполнять определенную работу.Они могут летать по-разному, но все они летают.
Это позволяет вам писать свой код таким образом, чтобы минимизировать затраты на обслуживание и значительно упростить его модификацию, не вызывая ошибок.