关于重载的疑问

关于重载的疑问

老师您好,根据课程关于重载我的理解是:同一个类下,方法名相同而参数列表不同,可能体现在参数的个数或顺序。而在这里对修饰符及返回值不做限制,于是我突发奇想,假如定义了一个与类名相同的且有返回值的普通方法(非构造方法),会怎么样,在IDE里发现没有报错,同时我定义了构造方法,这两个都是无参方法,输出都是一句话,最后测试发现输出了构造方法的值,为什么会这样呢,我如何才能输出同名普通方法呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕雪 2017-04-27 09:46:28

你好,1)你理解的重载可能体现在参数顺序这句话不对,例如test(int num1,int num2)与test(int num2,int num1)并不能参构成重载。2)你是要问:定义了一个与类名相同的且有返回值的普通方法,如何调用这个方法对吗?就跟普通方法一样调用就好了。例 如:类  obj=new 类();          obj.类();   祝:学习愉快


  • 提问者 ahak #1
    当我在Hello类内定义了 public Hello(){} 后,定义了public void Hello(){},这两个方法,一个是构造一个是普通方法,而我实例化后,发现调用方法Hello,运行的是构造方法,就是obj = new 类(); 这种情况下也没有报错,这时如何调用void的方法呢
    2017-04-27 09:51:35
  • 莨菽菽 回复 提问者 ahak #2
    你调用hello方法,运行的肯定是有void的那个方法,你肯定看错了,public Hello(){} 这个和类同名的构造方法是默认存在的,就是说就算你不创建也会有这个方法,他相当于是调用全部的方法,你无法调用这个方法本身,因为他代表全部方法,但是如果你有一个同名的其他:比如public void Hello(int i){};这样就算是重载了默认构造方法,就要写出来,默认那个就取消了 如果能理解望采纳,这个如果不理解看到后面再看看应该也算可以的
    2017-04-29 10:43:51
  • 好帮手慕雪 回复 提问者 ahak #3
    Hello hello=new Hello(); hello.Hello();
    2017-04-30 21:41:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师