java向上转型

来源:互联网 发布:上杉升 知乎 编辑:程序博客网 时间:2024/06/15 20:42

Super s=new Base();

子类对象当成父类对象,只能调用父类的成员,如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override)。这个调用过程就称为“动态绑定”。

转型需要注意的问题:

向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误。

package superclass; class Superclass {int a=6;   public void method()   {   System.out.println("super_method");   }   }public class Base extends Superclass{int a=5;public static void main(String[] args) {// TODO Auto-generated method stub       Base base= new Base();       base.method();       Superclass base1=new Base();           System.out.println(base.a);      System.out.println(base1.a);}public void method()   {   System.out.println("base_method");   }public void fly(){        System.out.println("bird flying...");}}

base1.fly();//就会出现编译错误。

上转型时子类的变量也被父类隐藏掉了(不存在了)