黑马程序员技术交流社区
标题:
实现重载方法时的错误
[打印本页]
作者:
李京
时间:
2012-9-9 11:15
标题:
实现重载方法时的错误
本帖最后由 李京 于 2012-9-9 13:08 编辑
class Program
{
/// <summary>
/// 定义一个static方法
/// </summary>
/// <param name="num1">第一个int型参数</param>
/// <param name="num2">第二个int型参数</param>
/// <returns>返回int型</returns>
public static int Add(int num1, int num2)
{
return num1 + num2;
}
/// <summary>
/// 重新定义Add方法
/// </summary>
/// <param name="num1">第一个int型参数</param>
/// <param name="num2">第二个double型参数</param>
/// <returns>返回double型</returns>
public double Add(int num1, double num2)
{
return num1 + num2;
}
/// <summary>
/// 重新定义Add方法,与第一个方法的参数个数不同
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <param name="num3"></param>
/// <returns></returns>
public int Add(int num1, int num2, int num3)
{
return num1 + num2 + num3;
}
static void Main(string[] args)
{
Program pro = new Program();//实例化类Program的对象pro
int x = 14;
int y = 21;
int z = 9;
double y2 = 5.3;
<FONT color=red>Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//此行报错</FONT>
Console.WriteLine("{0}+{1}={2}", x, y2, pro.Add(x, y2));
Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, pro.Add(x, y, z));
Console.ReadKey();
}
}
复制代码
错误 1 无法使用实例引用来访问成员“_05.重载方法的实现.Program.Add(int, int)”;请改用类型名来限定它 G:\基础复习\第1阶段 重点复习内容(5天)\04属性,方法,结构,类\05.重载方法的实现\Program.cs 49 52 05.重载方法的实现
请问这是什么原因,该怎么解决?
作者:
徐宏伟
时间:
2012-9-9 11:41
1、Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//你这里面的pro.Add()明显调用的是方法 public static int Add(int num1, int num2);
2、 public static int Add(int num1, int num2);的前面有static修饰,也就是说此方法为静态方法;
3、静态方法是不能被对象调用的,该通过类名(Program)来调用;
4、改正后:Console.WriteLine("{0}+{1}={2}", x, y,Program.Add(x, y));
【备注】:你做的这个code是为了演示重载,所以建议你把2中的static修饰符去掉;
作者:
许庭洲
时间:
2012-9-9 13:03
静态成员是不用new就能用的方法,static方法其实就是普通函数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2