在JAVA中,如果A是接口,B是A的是实现类,则A b=new B()是什么意思?b有什么用

解决方案 »

  1.   

    因为B是A的是实现类,也可以说是A的子类,所以上面语句发生了向上转型. new B()会在堆内存中产生一个B类的实例,
    A b会在栈内存中产生一个A类的引用.
    A b = new B()会让b指向堆内存中的new B()实例,但是该实例时B类的实例,这是就会发生向上转型.
    如果子类中存在和父类相同名称和参数的方法,这种情况叫做多态性,子类覆写父类方法,
    发生向上转型后,调用这种被子类覆写过的方法,那么会直接调用类B的方法show().