using System; public class Class1 { public static void Main(string[] strings) { BankAccount ba = new BankAccount(); Test1(ba); SavingsAccount sa = new SavingsAccount(); Test1(sa); Test2(sa); SpecialSaleAccount ssa = new SpecialSaleAccount(); Test1(ssa); Test2(ssa); Test3(ssa); SaleSpecialCustomer ssc = new SaleSpecialCustomer(); Test1(ssc); Test2(ssc); Test3(ssc); Test4(ssc); } public static void Test1(BankAccount account) { Console.Write("to Test(BankAccount)"); account.Withdrawal(100); } public static void Test2(SavingsAccount account) { Console.Write("to Test(SavingsAccount)"); account.Withdrawal(100); } public static void Test3(SpecialSaleAccount account) { Console.Write("to Test(SpecialSaleAccount)"); account.Withdrawal(100); } public static void Test4(SaleSpecialCustomer account) { Console.Write("to Test(SaleSpecialCustomer)"); account.Withdrawal(100); } } public class BankAccount { virtual public void Withdrawal(double dWithdrawal) { Console.WriteLine(" invokes BankAccount.Withdrawal()"); } } public class SavingsAccount : BankAccount { override public void Withdrawal(double dWithdrawal) { Console.WriteLine(" invokes SavingsAccount.Withdrawal()"); } } public class SpecialSaleAccount : SavingsAccount { new virtual public void Withdrawal(double dWithdrawal) { Console.WriteLine(" invokes SpecialSaleAccount.Withdrawal()"); } } public class SaleSpecialCustomer : SpecialSaleAccount { override public void Withdrawal(double dWithdrawal) { Console.WriteLine (" invokes SaleSpecialCustomer.Withdrawal()"); } }