向上转型和向下转型
声明一个父类Father,子类Son继承Father Father a = new Son() // 父类引用、子类对象(向上转型) Son b = (Son)a // 向下转型,强制转换 // 父类引用转成子类引用 public class Animal { public void eat(){ System.out.println("animal eatting..."); } } class Bird extends Animal{ public void eat(){ System.out.println("bird eatting..."); } public void fly(){ System.out.println("bird flying..."); } } class Main{ public static void main(String[] args) { Animal b=new Bird(); //向上转型 b.eat(); // 调用的是子类eat() //! error: b.fly(); // b虽指向子类对象,但此时子类作为向上转型的代价丢失和父类不同的fly()方法------ dosleep(new Male()); dosleep(new Female()); } public static void dosleep(Human h) {