The Java Program: ClassCast.java

  1 class Mammal {}
  2 class Dog extends Mammal {}
  3 class Cat extends Mammal {}
  4 
  5 public class ClassCast {
  6    public static void main (String[] args) {
  7       Mammal m = (Math.random()<0.5)?new Mammal():new Dog();
  8       Dog spot = new Dog();
  9       Cat felix = new Cat();
 10 
 11       m = spot;  m = felix; // Valid
 12       spot = m;             // Compile-time error
 13       spot  = (Dog) m;      // Valid at compile time; runtime check
 14       felix = (Cat) m;      // Valid at compile time; runtime check
 15       felix = spot;         // Compile-time error
 16       felix = (Cat) spot;   // Compile-time error
 17    }
 18 }