A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清心玉质 中级黑马   /  2013-8-6 11:26  /  2616 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-7 13:31 编辑

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

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是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 ) 形式的重载。

不知道你能理解不

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
可以通过参数的个数,参数的类型,以及参数的顺序(参数类型不同,否则顺序先后毫无意义),进行重载。
然而,无论是异常的类型还是异常的个数都不会对重载造成任何的影响
回复 使用道具 举报
龚首道 发表于 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))。和这个例子矛盾把!

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报 1 0
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){}————是重载没有错。

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

回复 使用道具 举报
重载要满足一下条件:
1.必须是同一个类
2.方法名(也可以叫函数)一样
3.参数类型不一样或参数数量不一样
我们是需要满足以上条件的,象楼主说的访问权限、返回类型、抛出的异常都是不能作为重载条件的。
回复 使用道具 举报
重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。
回复 使用道具 举报
我是来学习的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马