The Java Program: Subclass.java

  1 // Subclass.java -- illustrate simple subclassing
  2 
  3 // Two related classes
  4 class Dessert {
  5    String name = "Dessert";
  6    double calories;
  7    Dessert (double c) { this.calories = c; }
  8    /* No implicit constructor, since we have defined one.  */
  9 }
 10 
 11 class Cake extends Dessert {
 12    String name = "Cake";  // Instance var with same name as in super
 13    boolean icing;
 14    Cake (boolean i) { super (323.71); this.icing = i; }
 15 }
 16 
 17 // A totally unrelated class; can't coerce to "Dessert" or "Cake"
 18 class Furniture {
 19    int legs = 4;
 20 }
 21 
 22 public class Subclass {
 23 
 24    public static void main (String args[])  {
 25       Dessert neapolitan = new Dessert(312.4), d;
 26       Cake german = new Cake(true), c;
 27 
 28       d = (Dessert) german;            // A "widening"
 29 
 30       if (neapolitan instanceof Cake) {// If not an instance of, then
 31          c = (Cake) neapolitan;        // "narrowing" causes runtime err
 32       } else {
 33          c = new Cake (false);         // Java requires initialization
 34       }
 35 
 36       // The type of d is Dessert, but it really contains a Cake
 37       System.out.println (german.name);// name = "Cake"
 38       System.out.println (d.name);     // name = "Dessert"
 39    }
 40 }