c#基础-19.重写(override)和覆盖(new)的区别
Posted mr.chenyuelin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#基础-19.重写(override)和覆盖(new)的区别相关的知识,希望对你有一定的参考价值。
重写 override
用 virtual 修饰的方法,叫虚方法。
重写会改变父类方法的功能。
覆盖 new
在子类中用 new 修饰 定义的与父类中同名的方法,叫覆盖。
覆盖不会改变父类方法的功能。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace @override
{
class Animal
{
public virtual void Run()
{
Console.WriteLine("Run,Animal");
}
}
class Pig : Animal
{
public override void Run()
{
Console.WriteLine("Run,Pig");
}
}
class Cat : Animal
{
public new void Run()
{
Console.WriteLine("Run,Cat");
}
}
class Program
{
static void Main(string[] args)
{
Animal a1 = new Pig();//override子类重写父类,原父类方法体不会变
a1.Run();//Run,Pig
Animal a2 = new Cat();//new覆盖子类方法
a2.Run();//Run,Animal
Console.ReadKey();
}
}
}
以上是关于c#基础-19.重写(override)和覆盖(new)的区别的主要内容,如果未能解决你的问题,请参考以下文章