2 u013525092 u013525092 于 2016.02.29 10:28 提问

关于Java编译多态性和运行多态性

重载和重写的概念我了解,但是为啥方法的重载体现了编译的多态性,方法的重写体现了运行的多态性?
我是新人,还没有C币,真心求解,谢谢各位~

2个回答

bdmh
bdmh   Ds   Rxr 2016.02.29 10:37

不知道你是否清楚了重载和重写的用法和用途,重载是同名函数,不同参数,重写是子类可以重写父类方法,运行期,根据具体实例对象,去执行相应的对象的方法,一个父类对象,可能实际是子类对象,所以运行时,实际会执行子类的的重写的方法

u013525092
u013525092 谢谢您的解答,不知道我这样理解对不对,在实现多态时需要用父类来引用子类的对象,也就是说虽然是同一个父类,在运行的时候根据引用的子类对象的不同,得到的实际结果是不同的。请问编译时的多样性您是怎么理解的?
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.29 10:51

行为重载方法之间是本质上是不同的方法声明,在编译时就可以确定具体是那个类的哪个方法。而重写的方法本质上有相同的方法声明,表象无法区分是谁的方法,只有到了运行时才能确定具体的类型(是父类,还是某个实现子类),才能确定具体调用的是哪个类的方法。

u013525092
u013525092 谢谢解答!我理解啦
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!