Vielleicht würde ein Codebeispiel helfen, ich werde C # verwenden, aber Sie sollten in der Lage sein, mitzumachen.
Stellen wir uns vor, wir hätten eine Schnittstelle namens IPayable
public interface IPayable
{
public Pay(double amount);
}
Jetzt haben wir zwei konkrete Klassen, die diese Schnittstelle implementieren:
public class BusinessAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
public class CustomerAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
Stellen wir uns nun vor, wir hätten eine Sammlung verschiedener Konten. Dazu verwenden wir eine generische Liste vom Typ IPayable
List<IPayable> accountsToPay = new List<IPayable>();
accountsToPay.add(new CustomerAccount());
accountsToPay.add(new BusinessAccount());
Jetzt möchten wir 50,00 USD auf alle diese Konten zahlen:
foreach (IPayable account in accountsToPay)
{
account.Pay(50.00);
}
Jetzt sehen Sie, wie unglaublich nützlich Schnittstellen sind.
Sie werden nur für instanziierte Objekte verwendet. Nicht für statische Klassen.
Wenn Sie die Zahlung statisch gemacht hätten, wäre es beim Durchlaufen der IPayable-Konten in AccountsToPay nicht möglich, herauszufinden, ob Pay on BusinessAcount oder CustomerAccount aufgerufen werden sollte.