有人说,重载不会发生在父类与子类之间,但是也有人说,不管在不在同一个类,只要是方法名相同,参数不同就是重载。
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();
}
}
}
重载有对于已有的方法或操作符进行重构,方法被重载后可以通过其重载的形式或方法原形来调用,有几个重载就有几个调用的形式;操作符重载后会变成你重构的定义.
而覆写则是将之前的方法进行隐藏,之前的已经看不见了
不是重载,也不是重写!重载的概念是相对于在一个类中说的,也就是一个类中同名的方法不同的参数列表,跟返回值无关!你上面的2个类是继承关系,所以肯定不是重载
不是重载,也不是重写
好像构成重载 只是好像 坐等高人
不是重载,执行完子类的MyShow以后还会接着执行父类的MyShow。
重载必须是在同一个类里面,方法名相同,但是参数列表不相同,就是重载!
个人认为是重载
所谓继承就是编译器把父类里可以被继承的东西复制到子类中去,你应该知道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()); } }
这里我只是为了便于表达意思而写成这样的,具体的代码肯定不可能是这样的
所以我认为是重载的,有什么不对请指教