黑马程序员技术交流社区

标题: 有句话没有理解 [打印本页]

作者: 清心玉质    时间: 2013-8-6 11:26
标题: 有句话没有理解
本帖最后由 杨兴庭 于 2013-8-7 13:31 编辑

不能通过访问权限、返回类型、抛出的异常进行重载。

作者: 龚首道    时间: 2013-8-6 11:57
在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int))。
比如有个fun(int i),可以通过fun(float f)重载之。

但是不可以通过异常,如fun(int i) throw IOException  的方式进行重载,实际上此方式并未实现对fun的重载。
也不能通过不同的权限对其进行重载,如对public fun(int i)  进行类似  private fun(int i ) 形式的重载。

不知道你能理解不

作者: 龚首道    时间: 2013-8-6 12:06
可以通过参数的个数,参数的类型,以及参数的顺序(参数类型不同,否则顺序先后毫无意义),进行重载。
然而,无论是异常的类型还是异常的个数都不会对重载造成任何的影响
作者: 杨增坤    时间: 2013-8-6 15:03
龚首道 发表于 2013-8-6 11:57
在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一 ...

public static void show(int i,float y){
                     System.out.println((i+y));  
          }
          public static  void show(int i,int y){
                  System.out.println((i+y));
          }
         
          public static void main(String [] s){
                  show(1,2);
                  show(2,3f);
          }
这样是不错的,参数类型不完全一样就行,只考虑参数的情况下,

你所说的例如可以是fun(int, float), 但是不能为fun(int, int))。和这个例子矛盾把!
作者: 龚首道    时间: 2013-8-6 16:36
forward 发表于 2013-8-6 15:03
public static void show(int i,float y){
                     System.out.println((i+y));  
          }

不矛盾,因为您这里是通过不同的参数类型实现的重载:show(int i,float y)和show(int i,int y),而我所说的“例如可以是fun(int, float), 但是不能为fun(int, int)”,是以“不同的参数顺序”重载。

以不同参数顺序重载例子:show(int i ,float f){}  和  show(float f,int i){}————是重载没有错。

通过不同参数样式实现重载:不同的参数类型不同的参数个数不同的参数顺序


作者: 草帽    时间: 2013-8-6 17:10
重载要满足一下条件:
1.必须是同一个类
2.方法名(也可以叫函数)一样
3.参数类型不一样或参数数量不一样
我们是需要满足以上条件的,象楼主说的访问权限、返回类型、抛出的异常都是不能作为重载条件的。
作者: 黑马王晓明    时间: 2013-8-7 00:25
重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。
作者: l763631191    时间: 2014-12-24 01:11
我是来学习的




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