public class Casting2 { public static void main(String[] args) { Coin c1 = new Dime(); System.out.println("test 1: "+c1.toValue()); Coin c2 = new CanadianDime(); System.out.println("test 2: "+c2.toValue()); Dime c3 = (Dime) c2; System.out.println("test 3: "+c3.toValue()); } } abstract class Coin { private int value; public int toValue() { return value;} public Coin(int value) { this.value=value;} } class Dime extends Coin { public Dime() {super(10);} protected Dime(int value) {super(6);} } class CanadianDime extends Dime { public CanadianDime() {super(6);} } class Penny extends Coin { public Penny() {super(1);} } /* output: test 1: 10 test 2: 6 test 3: 6 */