C#继承overload与override
2021-02-02 00:28
标签:override http write pre oid image ictclas 继承 stat 首先解释下override与overload 翻译过来叫做重写和重载,笔者看来,二者的区别在两个方面表现的十分明显,首先是代码书写的区域,重载在一个类里面,重写则是子类对父类进行的重写,然后是表现优先级的不同,重写的表现优先级要高于被重写的对象,也就是说优先表现重写后的那个方法 对代码稍微做下更改,输出结果:
重写的P优先级明显高于被重写的P。 注意:当深层次继承时,重写表现出来的总是最后一次被重写那个。 然后继续说重载,这里笔者总结了下,方法的类型无论如何,只要方法名字相同,它就是一个方法,重载直接影响的是方法里面的参数,看看百科的定义 “重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。”
再看看代码提示,不难实验,或者自己试一下。 C#继承overload与override 标签:override http write pre oid image ictclas 继承 stat 原文地址:https://www.cnblogs.com/fairy-blonde/p/11567297.htmlnamespace ConsoleApp1
{
public class A
{
public void P() {
Console.WriteLine("这里是A的PP哦!");
}
public void P(int a) { }
public void P(bool a) { }
public void P(int a, int b) { }
}
public class B : A
{
public new void P()
{
Console.WriteLine("这是B的PP!");
}
}
}
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
_dictClass.Add(0, new A());
_dictClass.Add(1, new B());
_dictClass[0].P();
_dictClass[1].P();
(_dictClass[1] as B).P();
}
private static Dictionaryint, A> _dictClass = new Dictionaryint, A>();
}
}
namespace ConsoleApp1
{
public class A
{
public virtual void P() {
Console.WriteLine("这里是A的PP哦!");
}
public void P(int a) { }
public void P(bool a) { }
public void P(int a, int b) { }
}
public class B : A
{
public override void P()
{
Console.WriteLine("这是B的PP!");
}
}
}
文章标题:C#继承overload与override
文章链接:http://soscw.com/index.php/essay/49723.html