110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 虚方法
{
class C
{
public
virtual
void method()
{
Console.WriteLine("C Method!");
}
}
class D : C
{
public
override
void method()
{
//base.method();
Console.WriteLine("D Method!");
}
}
class DC : C
{
public
new
void method() //此处隐藏了父类的method方法,使用new关键 字.
{ //如不不 使用new,编译器会报警告消息,但仍然
//是隐藏父类访求method()
//base.method();
Console.WriteLine("dc method!");
}
}
class Program
{
static void Main(string[] args)
{
C cdClass =
new D();
cdClass.method();//调用D中的method(),输出(C Method! D Method!);其中C Method!是由D中的base.method()输出.
Console.WriteLine("=============");
//D dcClass = new C();//编译无法通过
//dcClass.method();
DC dcClass =
new DC();
dcClass.method();//调用DC中的method(),输出(C Method! DC Method!);此处隐藏了父类的方法
Console.WriteLine("=============");
//说明: 如果用类C修饰DC对象:
C dcClass2 = new DC();
dcClass2.method(); //调用C中的method(),输出(C Method!)
Console.WriteLine("=============");
}
}
}