黑马程序员技术交流社区

标题: 实现重载方法时的错误 [打印本页]

作者: 李京    时间: 2012-9-9 11:15
标题: 实现重载方法时的错误
本帖最后由 李京 于 2012-9-9 13:08 编辑
  1. class Program
  2.     {
  3.         /// <summary>
  4.         /// 定义一个static方法
  5.         /// </summary>
  6.         /// <param name="num1">第一个int型参数</param>
  7.         /// <param name="num2">第二个int型参数</param>
  8.         /// <returns>返回int型</returns>
  9.         public static int Add(int num1, int num2)
  10.         {
  11.             return num1 + num2;
  12.         }
  13.         /// <summary>
  14.         /// 重新定义Add方法
  15.         /// </summary>
  16.         /// <param name="num1">第一个int型参数</param>
  17.         /// <param name="num2">第二个double型参数</param>
  18.         /// <returns>返回double型</returns>
  19.         public double Add(int num1, double num2)
  20.         {
  21.             return num1 + num2;
  22.         }

  23.         /// <summary>
  24.         /// 重新定义Add方法,与第一个方法的参数个数不同
  25.         /// </summary>
  26.         /// <param name="num1"></param>
  27.         /// <param name="num2"></param>
  28.         /// <param name="num3"></param>
  29.         /// <returns></returns>
  30.         public int Add(int num1, int num2, int num3)
  31.         {
  32.             return num1 + num2 + num3;
  33.         }
  34.         static void Main(string[] args)
  35.         {
  36.             Program pro = new Program();//实例化类Program的对象pro
  37.             int x = 14;
  38.             int y = 21;
  39.             int z = 9;
  40.             double y2 = 5.3;
  41.             <FONT color=red>Console.WriteLine("{0}+{1}={2}", x, y, pro.Add(x, y));//此行报错</FONT>
  42.             Console.WriteLine("{0}+{1}={2}", x, y2, pro.Add(x, y2));
  43.             Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, pro.Add(x, y, z));
  44.             Console.ReadKey();
  45.         }
  46.     }
复制代码
错误        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