import java.util.List;

public class PembayaranPolimorfik {
    public static void main(String[] args) {
        List<Pembayaran> tagihan = List.of(
                new Tunai(150_000),
                new KartuKredit(320_000),
                new DompetDigital(75_000)); // jenis baru tanpa mengubah kode lama

        long total = 0;
        for (Pembayaran p : tagihan) {
            total += p.biaya();
            System.out.println(p.keterangan() + " Rp" + p.biaya());
        }
        System.out.println("Total: Rp" + total);
    }
}

interface Pembayaran {
    long biaya();

    String keterangan();
}

class Tunai implements Pembayaran {
    private final long jumlah;

    Tunai(long jumlah) {
        this.jumlah = jumlah;
    }

    public long biaya() {
        return jumlah;
    }

    public String keterangan() {
        return "Tunai         :";
    }
}

class KartuKredit implements Pembayaran {
    private final long jumlah;

    KartuKredit(long jumlah) {
        this.jumlah = jumlah;
    }

    public long biaya() {
        return Math.round(jumlah * 1.02); // biaya layanan 2%
    }

    public String keterangan() {
        return "Kartu kredit  :";
    }
}

class DompetDigital implements Pembayaran {
    private final long jumlah;

    DompetDigital(long jumlah) {
        this.jumlah = jumlah;
    }

    public long biaya() {
        return jumlah + 1_000; // biaya tetap Rp1.000
    }

    public String keterangan() {
        return "Dompet digital:";
    }
}
