2

这都是形式...

namespace Proxy_Pattern { public partial class Form1 : Form { public Form1() { InitializeComponent(); } 双银行金额 = 1000.00;

    private void btnCheck_Click(object sender, EventArgs e)
    {
        double amount;
        amount = double.Parse(txtAmount.Text);

        CheckProxy cp =new CheckProxy();
        cp.CheckTransactionRequest(amount);
        lbltotal.Text = bankAmount.ToString();
    }

    private void btnCreditCard_Click(object sender, EventArgs e)
    {

    }
}


abstract class BankSubject
{

    public abstract void CreditTransactionRequest(double amount);
    public abstract void CheckTransactionRequest(double amount);
}

class RealBankSubject : BankSubject
{
    double bank;
    public RealBankSubject(double m_bacc)

    {
        bank = m_bacc;
    }

    public override void CreditTransactionRequest(double num)
    {
        bank -= num;
    }

    public override void CheckTransactionRequest(double num)
    {
        bank += num;
    }
}

不实现继承的抽象成员....但是为什么呢?类 CreditCardProxy : BankSubject { RealBankSubject realSubject; 双倍金额;

    public CreditCardProxy (double m_bacc) 

    {
        amount = m_bacc ;
    }

没有合适的方法来覆盖?...这是怎么回事?我这里有方法吗?

    public override void CreditTransactionRequest()
    {


         if (realSubject == null)
        {
            realSubject = new RealBankSubject(amount);
        }

        realSubject.CreditTransactionRequest(amount);
    }

    public override void CheckTransactionRequest()
    {

    }
}


class CheckProxy : BankSubject
{
    RealBankSubject realSubject;
    double amount;

    public override void CreditTransactionRequest()
    { 

    }

    public override void CheckTransactionRequest()
    {

       if (realSubject == null)
        {
            realSubject = new RealBankSubject(amount);
        }

        realSubject.CheckTransactionRequest(amount);
    }
}

}

4

2 回答 2

0

CreditTransactionRequestinCreditCardProxy不接受任何参数,但CreditTransactionRequestin接受BankSubject。这就是为什么您不能覆盖签名不匹配的方法的原因。

于 2012-10-23T18:30:23.043 回答
0

在您的代理中,您没有将金额指定为方法的参数:

public override void CreditTransactionRequest();

所以它不能覆盖

public abstract void CreditTransactionRequest(double amount);

因为方法签名不匹配

于 2012-10-23T18:31:25.440 回答