黑马程序员技术交流社区

标题: 函数的重载有什么意义或者好处?在什么地方可以应用到? [打印本页]

作者: 漠然~回首℃    时间: 2014-3-2 23:08
标题: 函数的重载有什么意义或者好处?在什么地方可以应用到?
函数的重载有什么意义或者好处?在什么地方可以应用到?
作者: Zero霖    时间: 2014-3-2 23:23
这是我之前回过一个跟你问题很像的帖子的,你可以参考一下~覆盖和重载都是多态的体现形式。 1.重载是功能多态性的体现,方法重载指的是一个类中多个方法具有相同的名字,但是这些方法的参数必须不相同,简单的说,比如我在一个类中定义一个计算int型数据的除法方法,再定义一个计算double型数据的除法方法,将这两个方法都命名为division,一个是 int division(int x,int y),另一个是double division(double x,double y)(跟返回值没关系,返回值可以相同,这里是根据需要来决定返回值的),这就导致在对象调用方法时,根据你输入的不同参数类型来调用division方法。 2.方法覆盖,也称方法重写,指的是子类中定义一个方法,且这个方法的名字、返回类型、参数个数和参数类型与从父类那继承的方法完全相同时,隐藏了从父类那继承的方法。比如:类A中有一个方法叫void f(int x,double y),而类B继承了类A,也就继承了类A中的方法,当类B重写了从类A那继承过来的void f(int x,double y)方法以得到自身需要的结果,类B创建的对象调用void f(int x,double y)方法时将使用类B重写过的,而不是类A里面的该方法。当然,也可以根据需要即使重写了方法,也可以调用原来继承过来的未重写之前的方法。P.S.有很多方法覆盖都发生在继承了abstract类的类中,因为abstract类定义了一个abstract方法,该方法没有具体实现什么,而需要子类去实现,这就导致了继承了abstract类的子类必须去实现这个abstract方法,也就是说,继承了abstract类的子类必须实现这个功能,至于怎么实现这个功能和得到的结果是什么,abstract类就不用去管了。
作者: Zero霖    时间: 2014-3-2 23:24
如果你有哪里不理解可以继续问,我能回答的我就详细举例跟你说的。
作者: 位俊鹏    时间: 2014-3-2 23:45
当一个重载方法被调用时,Java 用参数的类型个数来表明实际调用的重载方法是哪一个。因此,每个重载方法的参数的类型或个数必须是不同的。并与返回值类型无关。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。就可以方便于阅读,优化了程序设计。
重载的价值在于它允许相关的方法可以使用同一个名字来访问。

作者: 位俊鹏    时间: 2014-3-2 23:49
1:  当一个重载方法被调用时,Java 用参数的类型个数来表明实际调用的重载方法是哪一个。因此,每个重载方法的参数的类型或个数必须是不同的。并与返回值类型无关。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。就可以方便于阅读,优化了程序设计。
2:重载的价值在于它允许相关的方法可以使用同一个名字来访问。
老师好像说过,在真的开发中用的用的应该不多,因为我们以后就很少吧方法名命名为相同的,这样阅读性较差,容易搞混.也只有考试,面试中才会问吧.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2