| using System;
class App {
public static void Main(){
BankAccount ba1 = new BankAccount("George", 1000.0M, 0.01),
ba2 = new CheckAccount("Bill", 2000.0M, 0.01),
baRes1, baRes2, baRes3, baRes4, baRes5, baRes6;
CheckAccount ca = new CheckAccount("John", 2000.0M, 0.01);
baRes1 = (BankAccount)ba1; // OK. But b1 is already of static
// type BankAccount
baRes2 = (CheckAccount)ba1; // Illegal downcasting. Run-time error
baRes3 = (BankAccount)ba2; // OK. But ba2 is already of static
// type BankAccount
baRes4 = (CheckAccount)ba2; // OK because ba2 refers to a CheckAccount
baRes5 = (BankAccount)ca; // OK. Legal upcasting.
baRes6 = (CheckAccount)ca; // OK. But ca is already of static
// type CheckAccount
}
} |