Być może przykładowy kod byłby pomocny, zamierzam użyć C #, ale powinieneś być w stanie to zrobić.
Załóżmy, że mamy interfejs o nazwie IPayable
public interface IPayable
{
public Pay(double amount);
}
Teraz mamy dwie konkretne klasy, które implementują ten interfejs:
public class BusinessAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
public class CustomerAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
Teraz udawajmy, że mamy zbiór różnych kont, w tym celu użyjemy ogólnej listy typu IPayable
List<IPayable> accountsToPay = new List<IPayable>();
accountsToPay.add(new CustomerAccount());
accountsToPay.add(new BusinessAccount());
Teraz chcemy zapłacić 50,00 $ na wszystkie te konta:
foreach (IPayable account in accountsToPay)
{
account.Pay(50.00);
}
Więc teraz widzisz, jak interfejsy są niezwykle przydatne.
Są używane tylko w przypadku obiektów, dla których utworzono instancję. Nie na zajęciach statycznych.
Gdybyś miał ustawioną płatność statyczną, podczas przeglądania IPayable w accountToPay nie byłoby sposobu, aby dowiedzieć się, czy należy wywołać płatność na koncie BusinessAcount czy CustomerAccount.