Mogę powiedzieć, że się do tego odnoszą. Kiedy po raz pierwszy zacząłem uczyć się o OO i C #, ja również nie otrzymałem interfejsów. W porządku. Musimy tylko znaleźć coś, co sprawi, że docenisz wygodę interfejsów.
Pozwól mi spróbować dwóch podejść. I wybacz mi uogólnienia.
Spróbuj 1
Powiedz, że jesteś rodzimym językiem angielskim. Wybierasz się do innego kraju, w którym angielski nie jest językiem ojczystym. Potrzebujesz pomocy. Potrzebujesz kogoś, kto może ci pomóc.
Czy pytasz: „Hej, czy urodziłeś się w Stanach Zjednoczonych?” To jest dziedzictwo.
Czy pytasz: „Hej, mówisz po angielsku”? To jest interfejs.
Jeśli zależy ci na tym, co robi, możesz polegać na interfejsach. Jeśli zależy ci na tym, co jest, polegasz na dziedzictwie.
Można polegać na dziedziczeniu. Jeśli potrzebujesz kogoś, kto mówi po angielsku, lubi herbatę i lubi piłkę nożną, lepiej jest poprosić o Brytyjczyka. :)
Spróbuj 2
Ok, spróbujmy innego przykładu.
Korzystasz z różnych baz danych i musisz zaimplementować klasy abstrakcyjne, aby z nimi pracować. Prześlesz swoją klasę do jakiejś klasy od dostawcy DB.
public abstract class SuperDatabaseHelper
{
void Connect (string User, string Password)
}
public abstract class HiperDatabaseHelper
{
void Connect (string Password, string User)
}
Wielokrotne dziedziczenie, mówisz? Wypróbuj to w powyższym przypadku. Nie możesz Kompilator nie będzie wiedział, którą metodę Connect próbujesz wywołać.
interface ISuperDatabaseHelper
{
void Connect (string User, string Password)
}
interface IHiperDatabaseHelper
{
void Connect (string Password, string User)
}
Teraz jest coś, z czym możemy współpracować - przynajmniej w języku C # - gdzie możemy jawnie implementować interfejsy.
public class MyDatabaseHelper : ISuperDatabaseHelper, IHiperDatabaseHelper
{
IHiperDataBaseHelper.Connect(string Password, string User)
{
//
}
ISuperDataBaseHelper.Connect(string User, string Password)
{
//
}
}
Wniosek
Przykłady nie są najlepsze, ale myślę, że ma to sens.
Interfejsy „dostaniesz” tylko wtedy, gdy poczujesz ich potrzebę. Dopóki nie pomyślisz, że nie są dla ciebie.