How would you design a payment system using abstract classes and interfaces?
- Use an interface for common operations: IPayment.
- Use an abstract class for shared behavior like logging.
interface IPayment { void Pay(decimal amount); }
abstract class PaymentBase : IPayment
public abstract void Pay(decimal amount);
public void Log(string message) => Console.WriteLine(message);
class CreditCardPayment : PaymentBase
public override void Pay(decimal amount) =>
Console.WriteLine($"Paid {amount} by Credit Card");