java向上转型过程中方法重写

来源:互联网 发布:易语言图片处理源码 编辑:程序博客网 时间:2024/06/06 00:18

当我们子类继承了父类,并将父类中的方法重写,如果我们使用向上转型调用父类中重写的方法。那么是调用父类 or子类?

package reuse.extend;class Amphibian {//两栖动物    void life(){        System.out.println("Amphibian life");    }}public class Frog extends Amphibian{    @Override    void life() {        System.out.println("Forg life");        super.life();    }    public static void main(String[] args) {        Amphibian amphibian = new Frog();        amphibian.life();    }}

输入结果:

Forg life
Amphibian life


1、很显然是调用了子类重写之后的方法。从表面看上去,向上转型之后指向父类的引用,当然调用父类的方法,然而编译器并不是这样处理的!至于为什么呢?假设向上转型之后只是调用父类的方法,我们知道如果子类可以直接可以掉用重写的方法的,感觉没什么影响。希望对这方法有了解的,帮忙解释一下,谢谢!

2、如果基类方法被私有,即使被子类重写,向上转型之后调用重写方法,则只会调用基类的私有方法。






阅读全文
0 0
原创粉丝点击