Mungkin contoh kode akan membantu, saya akan menggunakan C #, tetapi Anda harus dapat mengikuti.
Mari kita berpura-pura kita memiliki antarmuka yang disebut IPayable
public interface IPayable
{
public Pay(double amount);
}
Sekarang, kami memiliki dua kelas konkret yang mengimplementasikan antarmuka ini:
public class BusinessAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
public class CustomerAccount : IPayable
{
public void Pay(double amount)
{
//Logic
}
}
Sekarang, mari berpura-pura kita memiliki koleksi berbagai akun, untuk melakukan ini kita akan menggunakan daftar generik dari jenis IPayable
List<IPayable> accountsToPay = new List<IPayable>();
accountsToPay.add(new CustomerAccount());
accountsToPay.add(new BusinessAccount());
Sekarang, kami ingin membayar $ 50,00 ke semua akun itu:
foreach (IPayable account in accountsToPay)
{
account.Pay(50.00);
}
Jadi sekarang Anda melihat bagaimana antarmuka sangat berguna.
Mereka digunakan hanya pada objek instantiated. Bukan di kelas statis.
Jika Anda melakukan pembayaran statis, saat perulangan melalui akun IPayable di akun ToPay, tidak akan ada cara untuk mengetahui apakah harus membayar panggilan di BusinessAcount atau CustomerAccount.