public class Downcasting2 { public static void main(String[] args) { BankAccount x; // x is a Base class variable CheckingAccount y; // y and z are Derived class variables CheckingAccount z; /* ------------------------------------------------------- Remember that: A derived class may have MORE variables/methods than the base class ! ------------------------------------------------------- */ /* -------------------------------- An ILLEGAL downcasting scenario -------------------------------- */ x = new BankAccount(343, "John", 2000.0); // x references a BankAccount object z = (CheckingAccount) x; // Downcasting, NOT allowed because: // x references a BankAccount object // z is a CheckingAccount reference var. // // A CheckingAccount object has // MORE variables/methods than // a BankAccount object. // Some operations are NOT possible ! } }