大家帮我判断一下,这种情况是重载吗?

netwhere 2010-10-21 12:42:31
大家帮我判断一下,这种情况是重载吗?
我认为这就是重载,可是有人说,这是父类与子类的关系,根本没有重载一说,是这样吗?
如果不是重载,是什么呢?
关键我想弄明白一点,子类与其父类之间,存在重载这一说法吗?

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();
}
}

}

...全文
286 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
njw1028 2010-10-21
  • 打赏
  • 举报
回复
应该是重载的子类的MyShow(int i)
冰川711 2010-10-21
  • 打赏
  • 举报
回复
有必要讨论这个问题么?
有意义么?
njw1028 2010-10-21
  • 打赏
  • 举报
回复
重载吧

子类默认继承父类的MyShow
那一刻的风情 2010-10-21
  • 打赏
  • 举报
回复
比较同意28楼的看法
ZengHD 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 chuxiaoyun 的回复:]

重载是参数名相同 参数列表不同而已 所有是重载
[/Quote]

你漏了一个最重要的前提:同一个类中

重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
chuxiaoyun 2010-10-21
  • 打赏
  • 举报
回复
重载是参数名相同 参数列表不同而已 所有是重载
bjghostleo 2010-10-21
  • 打赏
  • 举报
回复
只能算是两个类里的同名方法吧。
ZengHD 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zenghd 的回复:]

重载是在同一个类中
[/Quote]


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
{
// 我认为底下这两个MyShow才算重载
public void MyShow(int i,string name)
{
Console.WriteLine("两个参数:{0},{1}",i.ToString(),name.ToString());
}

public void MyShow(int i,int j,string name)
{
Console.WriteLine("三个参数:{0},{1},{2}",i.ToString(),j.ToString(),name.ToString());
}
}

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

}


richard_2010 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 youbl 的回复:]

父类里有virtual或者abstract,子类才能实现重写或覆盖

而重载,只要方法名一致,参数不同,就是重载
[/Quote]

同意。父类与子类的函数关系,只有重写或覆盖一说。
一个类里面的函数叫重载。

BTW,这是哪个技术区?我学java的,看见是热门帖子就进来了。
游北亮 2010-10-21
  • 打赏
  • 举报
回复
父类里有virtual或者abstract,子类才能实现重写或覆盖

而重载,只要方法名一致,参数不同,就是重载
游北亮 2010-10-21
  • 打赏
  • 举报
回复
很多人都搞不清楚 重载和重写的区别
楼主的是重载,

请参考:
[Quote=引用 11 楼 wuyq11 的回复:]
重载是指方法名称相同, 只是参数个数或类型不同. 方法功能是相同的.
virtual 定义为虚方法
override 对虚方法实现,具有多态性
new 把基类中的同名方法替换掉, 不具有多态性
public void method(int v){} //覆盖
public int method(int v1,int v2){return 0;} //重载
[/Quote]
zcty520 2010-10-21
  • 打赏
  • 举报
回复
我认为算重载吧
//class zgh2 继承了 class zgh1
//如果你把zgh2 这样看就更清晰了。
class zgh2 :zgh1
{
//这个方法是重载吗?
public void MyShow(int i,string name)
{
Console.WriteLine("两个参数:{0},{1}",i.ToString(),name.ToString());
}
public void MyShow(int i)
{
base.MyShow(i);
}


}



边城的刀声 2010-10-21
  • 打赏
  • 举报
回复
虽然这是个重载,但不是个好重载,不符合重载的规则,好的重载应该是简单的重载调用复杂的重载

public void MyShow(int i)
{
MyShow(i,"匿名");
}

public void MyShow(int i,string name)
{
Console.WriteLine("i:{0} name {1}",i.ToString(),name.ToString());
}
这样才是合理的重载
xxxxljb_023 2010-10-21
  • 打赏
  • 举报
回复
是重载的
事理 2010-10-21
  • 打赏
  • 举报
回复
子类继承父类,如果子类里面有和父类相同的方法名字,而且子类方法前面没有加new关键字,就属于重载,重载简单概括就是方法名相同,参数个数或类型不同,与返回类型无关。

[Quote=引用 11 楼 wuyq11 的回复:]
重载是指方法名称相同, 只是参数个数或类型不同. 方法功能是相同的.
virtual 定义为虚方法
override 对虚方法实现,具有多态性
new 把基类中的同名方法替换掉, 不具有多态性
public void method(int v){} //覆盖
public int method(int v1,int v2){return 0;} //重载
[/Quote]
zhujunyanging 2010-10-21
  • 打赏
  • 举报
回复
重载+1
skywangjian1234 2010-10-21
  • 打赏
  • 举报
回复
是重载啊,子类继承父类的方法。
dai821 2010-10-21
  • 打赏
  • 举报
回复
这样啊
是重载,当zgh2 继承zgh1的时候,在zgh2里面就拥有了zgh1中的成员,就是说zgh2 中已经有了MyShow()这个方法,你在写一个和他同名的但是参数数目和类型不同的方法,你说是重载吗?
netwhere 2010-10-21
  • 打赏
  • 举报
回复
回18楼,你说的是虚函数呀,可是我的问题中,前提是不讨论多态。我的父类没有虚函数,所以不存在多态的问题,所以不存在 重写(override)和隐藏(new)

我只想问,子类与父类的同名函数 MyShow(),是一个独立的方法呢?还是重载父类的方法,
说白了,我就是想问,父类与子类间,是否存在“重载”这一说法。
zhou946163 2010-10-21
  • 打赏
  • 举报
回复
是重载的,
class zgh2 :zgh1
zgh2类里面都会有类zgh1里面的方法,
所有你这种是重载。


加载更多回复(15)

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧