#Java向上转型
package test;
public class Animal1{
public void eat(){
System.out.println("animate eat!");
}
}
class Bird extends Animal1{
public void eat(){
System.out.println("bird eat!");
}
public void fly(){
System.out.println("bird fly!");
}
}
class main{
public static void main(String[] args){
Animal1 b=new Bird();//向上转型
b.eat();
b.fly();//会发现提示fly方法没有定义
}
}
Animal b=new Bird()就是一个向上转型,子类对象当成父类对象,只能调用父类的成员,如果子类重写了父类的方法,就根据这个引用指向调用子类重写的这个方法,这个方法就是覆盖。这个调用过程就叫“动态绑定”。 向上转型时父类指向子类引用对象会遗失与父类对象共有的其他方法,也就是在转型过程中,子类的所有新的方法都会遗失掉,在编译时,系统会提供找不到方法的错误。