编译期多态和运行时多态理解

编译和运行的划分

编译期是指 代码编译成字节码的过程(不是写代码的过程)

运行期是指 类字节码被加载进内存(从静态结构转换为内存运行结构)的过程

两种多态的具体实现

编译期多态是指方法重载,运行期多态是指方法重写和向上(下)转型

那么为什么说方法重载是编译期多态呢?
因为调用哪个方法在编译成字节码的时候,是可以根据参数类型、参数个数就确定下来的。

又为什么说方法重写、向上转型是运行时多态呢?
因为向上转型中,方法的调用涉及到了方法重写,此时需要先去父类中找到该方法,然后再去判断子类是否重写了该方法,如果子类重写了该方法,那么就会调用子类的方法

示例代码如下:

Father A = new Son();
A.do();

此时上面的代码在编译期,并不知道调用 Father 的do()方法,还是调用 Son 的 do() 方法。因为向上转型的方法调用是先去父类找该方法,再判断是否重写了该方法,如果重写了就调用子类的重写方法。而编译期间没有做这一步判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值