首页 新闻 搜索 专区 学院

大家帮看一下,这种情况属于重载吗?

0
悬赏园豆:5 [待解决问题]

有人说,重载不会发生在父类与子类之间,但是也有人说,不管在不在同一个类,只要是方法名相同,参数不同就是重载。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace diedai
{
class zgh1
{
public void MyShow(int i)
{
Console.WriteLine("一个参数:{0}",i.ToString());
}
}

class zgh2 :zgh1
{
//这个方法是重载吗?
public void MyShow(int i,string name)
{
Console.WriteLine("两个参数:{0},{1}",i.ToString(),name.ToString());
}
}

class Program
{
static void Main(string[] args)
{
zgh2 obj1 = new zgh2();
obj1.MyShow(1);
obj1.MyShow(1,"dddd");
Console.ReadLine();
}
}
}

问题补充: 我想 MyShow()应该不是覆盖父类的吧,因为参数本来就不同,所以不用加 new, 另外,也不存在多态,因为没有虚函数,所以我认为是重载。 但是又不确切,所以想听听大家的看法,彻底把这个概念弄明白了。
浮沙筑高台的主页 浮沙筑高台 | 菜鸟二级 | 园豆:223
提问于:2010-10-21 13:54
< >
分享
所有回答(7)
0

重载有对于已有的方法或操作符进行重构,方法被重载后可以通过其重载的形式或方法原形来调用,有几个重载就有几个调用的形式;操作符重载后会变成你重构的定义.
而覆写则是将之前的方法进行隐藏,之前的已经看不见了

茂茂 | 园豆:2860 (老鸟四级) | 2010-10-21 14:02
0

不是重载,也不是重写!重载的概念是相对于在一个类中说的,也就是一个类中同名的方法不同的参数列表,跟返回值无关!你上面的2个类是继承关系,所以肯定不是重载

yixin841210 | 园豆:1138 (小虾三级) | 2010-10-21 14:06
0

可以参考:

http://blog.csdn.net/laodao1/archive/2009/08/22/4473346.aspx

里面详细介绍了重载和重写的区别

wang_yb | 园豆:3275 (老鸟四级) | 2010-10-21 15:05
0

不是重载,也不是重写

天神一 | 园豆:845 (小虾三级) | 2010-10-21 18:47
0

好像构成重载   只是好像   坐等高人

写代码的小2B | 园豆:4346 (老鸟四级) | 2010-10-22 10:42
0

不是重载,执行完子类的MyShow以后还会接着执行父类的MyShow。

重载必须是在同一个类里面,方法名相同,但是参数列表不相同,就是重载!

天堂口 | 园豆:514 (小虾三级) | 2010-10-23 00:16
0

个人认为是重载

所谓继承就是编译器把父类里可以被继承的东西复制到子类中去,你应该知道CLR吧,你上面的class zgh2在CLR中是应该是这样的

class zgh2 
{
public void MyShow(int i)
{
Console.WriteLine("一个参数:{0}",i.ToString());
}
public void MyShow(int i,string name)
{
Console.WriteLine("两个参数:{0},{1}",i.ToString(),name.ToString());
}
}

这里我只是为了便于表达意思而写成这样的,具体的代码肯定不可能是这样的

所以我认为是重载的,有什么不对请指教

 

ackamen | 园豆:1 (初学一级) | 2013-01-21 20:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册