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 }