| Specialization, Extension, and Inheritance - slide 38 : 40 |
Upcasting converts an object of a specialized type to a more general type
Downcasting converts an object from a general type to a more specialized type

BankAccount ba1,
ba2 = new BankAccount("John", 250.0M, 0.01);
LotteryAccount la1,
la2 = new LotteryAccount("Bent", 100.0M);
ba1 = la2; // upcasting - OK
// la1 = ba2; // downcasting - Illegal
// discovered at compile time
// la1 = (LotteryAccount)ba2; // downcasting - Illegal
// discovered at run time
la1 = (LotteryAccount)ba1; // downcasting - OK
// ba1 already refers to a LotteryAccount







