黑马程序员技术交流社区
标题:
这两i部分如何实现重载呢?
[打印本页]
作者:
@克俊
时间:
2013-10-19 12:36
标题:
这两i部分如何实现重载呢?
本帖最后由 @克俊 于 2013-10-19 22:43 编辑
各位黑马师兄师姐,求教一个问题。
我在自学到重载部分时,遇到一个问题,自己脑袋卡壳了,找不到解决方法。
毕老师有讲到,下面代码中的需求1部分和需求2部分的代码改后能利用重载提高代码复用性,但我不知道怎样去改,自己搞了好久都是编译失败,很是崩溃~~~
我的问题是:
1、我无论是注释掉需求1部分的代码,还是注释掉需求2部分的代码,都能输出同样的结果。是为什么呢?我不知道原因~~~~
2、这两部分代码要怎样改才能有效重载,提高代码的复用性呢?像我那样的做法(即注释掉其中任何一部分)就算是实现了重载了吗?
所以,我不得以向黑马的师兄师姐求助。
期待黑马师兄师姐的指教~~~
感激不尽~~
我写的代码如下:
class FunctionOverload15
{
public static void main(String[] args)
{
System.out.println(4+5);
printHr();
System.out.println(4+5+6);//因为已经存在需求1,就可以直接调用需求1,来对需求2进行优化。
printHr();
}
public static void printHr()
{
System.out.println("---------------");
}
//需求1、定义一个加法运算,获取两个整数的和。
public static int add(int x,int y)//add为函数名,定义函数名重点在于体现函数的功能。
{
return x+y;
}
//需求2、定义一个加法运算,获取三个整数的和。
public static int add(int x,int y,int z)
{
return (x+y)+z;//return add(x+y)+z;
}
}
作者:
周学彬
时间:
2013-10-19 13:02
本帖最后由 周学彬 于 2013-10-19 13:13 编辑
你定义的两个函数并没有被调用,有两个原因1,你没有调用add函数,你只是打印了几个常数的和
2,即使基调用了add函数,编译器会报错,因为参数形式不匹配。函数调用时,形参要严格按照函数定义的形式传递。你的add函数里面有两个或三个整数,所以,你在调用时使用4+5+6只会得出一个15,这只算一个整数,找不到匹配的重载函数
由于是静态代码段,在别的类里使用时需要使用类名调用,这段代码可以不用。
正确的代码如下:
class FunctionOverload15
{
public static void main(String[] args)
{
int x, y, z;
x = 4;
y = 5;
z = 6;
System.out.println(add(x, y));
printHr();
System.out.println(add(x, y, z));//因为已经存在需求1,就可以直接调用需求1,来对需求2进行优化。
printHr();
}
public static void printHr()
{
System.out.println("---------------");
}
}
复制代码
需求2的代码注释的也不对:应该把add里面的+改成,。
//需求2、定义一个加法运算,获取三个整数的和。
public static int add(int x,int y,int z)
{
return (x+y)+z;//return add(x, y)+z;
}
复制代码
作者:
周学彬
时间:
2013-10-19 13:05
奇怪,代码怎么显示的这么乱?
稍等,我修改下
作者:
ily521125
时间:
2013-10-19 13:52
你的main函数里只是直接输出了4+5和4+5+6的值,而没有调用add函数,你写的两个add函数的参数个数不一样可以构成方法重载,只是你没调用而已
作者:
周志龙
时间:
2013-10-19 18:26
如果楼主已经解惑,请将帖子改为提问结束
作者:
To
时间:
2013-10-20 19:08
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
作者:
1961993790
时间:
2013-10-24 10:17
System.out.println(4+5);
printHr();
System.out.println(4+5+6);//因为已经存在需求1,就可以直接调用需求1,来对需求2进行优化。
printHr();
}
public static void printHr()
{
System.out.println("---------------");
}
//需求1、定义一个加法运算,获取两个整数的和。
public static int add(int x,int y)//add为函数名,定义函数名重点在于体现函数的功能。
{
return x+y;
}
//需求2、定义一个加法运算,获取三个整数的和。
public static int add(int x,int y,int z)
{
return add(x,y)+z;
}
这里就体现了函数的重载,好像楼主你注释的部分//return add(x+y)+z;
本身代码就有问题应该是//return add(x,y)+z;
需要强调的是函数的重载,有利于对代码的复用。希望对你学习有帮助!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2