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