public class Package { public String checksum() { return "Package"; } public static void main(String []args) { Comm c = new Comm(); System.out.println(c.send((Package)new UDP()) + "; " + c.send(new TCP()) + "; " + c.send(new UDP())); } } class UDP extends Package { public String checksum() { return "UDP"; } } class TCP extends Package { public String checksum() { return "TCP"; } } class Comm { String send(Package p) { return "PKG:" + p.checksum(); } String send(UDP p) { return "UDP:" + p.checksum(); } String send(TCP p) { return "TCP:" + p.checksum(); } }