Ich kann sagen, ich beziehe mich darauf. Als ich anfing, etwas über OO und C # zu lernen, bekam ich auch keine Interfaces. Das ist okay. Wir müssen nur auf etwas stoßen, mit dem Sie den Komfort von Schnittstellen schätzen lernen.
Lassen Sie mich zwei Ansätze ausprobieren. Und verzeihen Sie mir die Verallgemeinerungen.
Versuchen Sie 1
Angenommen, Sie sprechen Englisch als Muttersprache. Sie reisen in ein anderes Land, in dem Englisch nicht die Muttersprache ist. Sie benötigen Hilfe. Sie brauchen jemanden, der Ihnen helfen kann.
Fragen Sie: "Hey, sind Sie in den Vereinigten Staaten geboren?" Das ist Vererbung.
Oder fragst du: "Hey, sprichst du Englisch?" Das ist Schnittstelle.
Wenn es Ihnen wichtig ist, was es tut, können Sie sich auf Schnittstellen verlassen. Wenn Sie sich für das interessieren, was ist, verlassen Sie sich auf Vererbung.
Es ist in Ordnung, sich auf die Vererbung zu verlassen. Wenn Sie jemanden brauchen, der Englisch spricht, Tee mag und Fußball mag, sollten Sie besser nach einem Briten fragen. :)
Versuchen Sie 2
Ok, lass uns ein anderes Beispiel versuchen.
Sie verwenden verschiedene Datenbanken und müssen abstrakte Klassen implementieren, um mit ihnen arbeiten zu können. Sie übergeben Ihre Klasse an eine Klasse des DB-Anbieters.
public abstract class SuperDatabaseHelper
{
void Connect (string User, string Password)
}
public abstract class HiperDatabaseHelper
{
void Connect (string Password, string User)
}
Mehrfachvererbung, sagen Sie? Versuchen Sie das mit dem obigen Fall. Das kannst du nicht. Der Compiler weiß nicht, welche Connect-Methode Sie aufrufen möchten.
interface ISuperDatabaseHelper
{
void Connect (string User, string Password)
}
interface IHiperDatabaseHelper
{
void Connect (string Password, string User)
}
Jetzt können wir - zumindest in C # - mit etwas arbeiten, mit dem wir Schnittstellen explizit implementieren können.
public class MyDatabaseHelper : ISuperDatabaseHelper, IHiperDatabaseHelper
{
IHiperDataBaseHelper.Connect(string Password, string User)
{
//
}
ISuperDataBaseHelper.Connect(string User, string Password)
{
//
}
}
Fazit
Die Beispiele sind nicht die besten, aber ich denke, es kommt darauf an.
Sie werden nur Schnittstellen "bekommen", wenn Sie das Bedürfnis danach haben. Bis sie denken Sie, dass sie nicht für Sie sind.