// using references and inheritance
//
// what happens to method calls?

class Mammal {
    String name;
    Mammal(String name) {
	this.name = name;
    }
    void test() {
	System.out.println("Test: mammal");
    } // method test

} // class Mammal

class Horse extends Mammal {
    Horse(String name) {
	super(name);
    }

    // Method test is overriden in this class!
    void test() {
	System.out.println("Test: horse");
    } // method test

} // class Horse

public class polym2 {
    public static void main(String args[]) {

	Mammal m1 = new Mammal("mammal");
	Horse h1 = new Horse("horse");

	m1.test(); // access class Mammal
	m1 = h1;   // m1 and h1 now aliases and use class Horse
	m1.test(); // access class Horse, now

    } // method main
} // class polym2

/* Output:
Test: mammal
Test: horse
*/
