黑马程序员技术交流社区
标题:
overload与override的区别
[打印本页]
作者:
惜别的海岸
时间:
2013-5-16 17:49
标题:
overload与override的区别
本帖最后由 惜别的海岸 于 2013-5-17 00:04 编辑
谁能帮忙解释一下overload与override的区别啊?
作者:
刘茂林
时间:
2013-5-16 17:50
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载
这种问题 视频上有讲的。。。这种百度就出来了
作者:
SOAR
时间:
2013-5-16 18:06
overloading:又叫静态多态性。是在同一个类中同名方法在功能上的重载。这也包括一个类对其父类同名方法在功能上的重载,而且方法声明形式上要求同名的方法具有
不同的参数列表
。
overriding:又叫动态多态性。指的是子类和父类的类体中均定义了具有相同声明的非静态成员方法。基本相同声明的成员方法要求子类的成员方法和其父类对应的成员方法具有相同的方法名,相同的参数个数,对应参数的类型也相同。
作者:
飞鸟青崖
时间:
2013-5-16 19:29
overload:重载。
是指两个方法名相同,但是参数列表不同。参数列表不同包括三种情况:形参的个数不同,形参的类型不同,形参的类型的顺序不同。只有满足一种情况就可以 了。它和返回值是否相同无关。其时你可以这么想,当JVM调用一个函数时,它先通过函数名来寻找该函数,有可能会找到好几个。那么它只好用参数来匹配了,看能匹配到哪一个就用哪一个。这个时候因为还没有执行,JVM根本不知道会返回什么类型的值,所以就无法通过返回值来确定到底该用哪一个方法了。
override:重写,覆盖。
我觉得还是用重写好理解些。既然是重写了,那么你必须保证和原来的一样。所以它要求返回值、函数名、参数列表都得完全一样才行。
当子类重写了父类的方法后,子类除了通过super来调用父类的方法外,就没有办法调用父类的被重写的方法了。
但是如果两个方法是重载,那么这两个方法都可以用,而且不受任何影响。
作者:
殇_心。
时间:
2013-5-16 20:32
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2