/*
override是在原来的基础上覆盖,现在就只有子类的该方法,而父类的该方法已经不存在
new是子类生成了一个与父类同名的新方法,此时父类的这个方法还是存在的
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace override与new
{
class A
{
public virtual void G()
{
Console.WriteLine("A.G");
}
public void F()
{
Console.WriteLine("A.F");
}
}
class B : A
{
public override void G()
{
Console.WriteLine("B.G");
}
new public void F()
{
Console.WriteLine("B.F");
}
}
class C : B
{
public override void G()
{
Console.WriteLine("C.G");
}
new public void F()
{
Console.WriteLine("C.F");
}
}
class Program
{
static void Main(string[] args)
{
C _c = new C();
A a = _c;
B b = _c;
a.F();
b.F();
_c.F();
a.G();
b.G();
_c.G();
}
}
}
//A.F B.F C.F C.G C.G C.G