// Polymorphism.java public class Polymorphism { public static void main(String[] args) { demoPolymorphism(); } public static void doFooInterface(FooInterface f) { f.foo(); } public static void doFoo(Foo f) { f.foo(); } public static void demoPolymorphism() { doFoo(new Foo()); doFoo(new Bar()); doFooInterface(new Fooey()); doFooInterface(new Barey()); } } class Foo { public void foo() { System.out.println("Foo!!!"); } } class Bar extends Foo { public void foo() { System.out.println("Bar!!!!"); } } interface FooInterface { public void foo(); } class Fooey implements FooInterface { public void foo() { System.out.println("Foo Interface!!!!"); } } class Barey implements FooInterface { public void foo() { System.out.println("Bar Interface!!!!!"); } }