Why does the following program fail to compile?
public class BabyBoyBabyGirl {
public static void main(String[] args) {
BabyBoy bb = new BabyBoy();
bb.print();
AbstractBaby ab = bb;
((BabyBoy) ab).print();
ab = new BabyGirl();
ab.print();
((BabyGirl) ab).print();
}
}
interface Baby {
String getName();
int getAge();
void print();
}
abstract class AbstractBaby {
String name;
int age;
public String getName() { return name; }
public int getAge() { return age; }
}
class BabyBoy extends AbstractBaby implements Baby {
public void print() {
System.out.println("Boy " + getName() + "(" + getAge() + ")");
}
}
class BabyGirl extends AbstractBaby implements Baby {
public void print() {
System.out.println("Girl " + getName() + "(" + getAge() + ")");
}
}