namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IPayable[] payers = new IPayable[4];
payers[0] = new BankAccount(3000);
payers[1] = new BankAccount(5000);
payers[2] = new CreditCard(5000);
payers[3] = new DebitCard((BankAccount)payers[1]);
foreach(IPayable payer in payers)
{
Receive(payer, 1500);
Receive(payer, 2000);
}
}
static void Receive(IPayable payer, decimal money)
{
if (payer.Pay(money))
Console.WriteLine("{0}成功付款{1}元", payer, money);
else
Console.WriteLine("{0}付款失败", payer);
}
}
} public interface IPayable
{
bool Pay(decimal money);
}
public class BankAccount : IPayable
{
protected decimal balance = 0;
public decimal Balance
{
get { return balance; }
set { balance = value; }
}
public BankAccount(decimal balance)
{
this.balance = balance;
}
public virtual bool Pay(decimal money)
{
if (balance >= money)
{
balance -= money;
return true;
}
else
return false;
}
}
public class CreditCard : BankAccount
{
private decimal credit;
public decimal Credit
{
get { return credit; }
}
public CreditCard(decimal credit)
: base(0)
{
this.credit = credit;
}
public override bool Pay(decimal money)
{
if (money <= credit + balance)
{
balance -= money;
return true;
}
else
return false;
}
}
public class DebitCard : IPayable
{
private BankAccount account;
public DebitCard(BankAccount account)
{
this.account = account;
}
public bool Pay(decimal money)
{
return account.Pay(money);
}
}
就只是子类继承父类,可以使用父类公共的属性和方法而已。
那句不明白,标识一下
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632