using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace _7_11
{
class BaseClass
{
public void NVMeth()
{
Console.WriteLine("调用了基类BaseClass类的非虚方法NVMEth");
}
public virtual void VMeth()
{
Console.WriteLine("调用了基类BaseClass类的虚方法NMeth");
}
}
class InClass : BaseClass
{
new public void NVMeth()
{
Console.WriteLine("调用了派生类InClass类的非虚方法NVMeth");
}
public override void VMeth()
{
Console.WriteLine ("调用了派生类InClass类的虚方法NMeth");
}
}
class Program
{
static void Main(string[] args)
{
InClass InObj=new InClass ();
BaseClass BaseObj=InObj;
BaseObj .NVMeth ();
BaseObj .VMeth();
InObj .NVMeth ();
InObj .VMeth ();
}
}
}
为什么结果是:调用了基类BaseClass类的非虚方法NVMEth
调用了派生类InClass类的虚方法NMeth
调用了派生类InClass类的非虚方法NVMeth
调用了派生类InClass类的虚方法NMeth
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace _7_11
{
class BaseClass
{
public void NVMeth()
{
Console.WriteLine("调用了基类BaseClass类的非虚方法NVMEth");
}
public virtual void VMeth()
{
Console.WriteLine("调用了基类BaseClass类的虚方法NMeth");
}
}
class InClass : BaseClass
{
new public void NVMeth()
{
Console.WriteLine("调用了派生类InClass类的非虚方法NVMeth");
}
public override void VMeth()
{
Console.WriteLine ("调用了派生类InClass类的虚方法NMeth");
}
}
class Program
{
static void Main(string[] args)
{
InClass InObj=new InClass ();
BaseClass BaseObj=InObj;
BaseObj .NVMeth ();
BaseObj .VMeth();
InObj .NVMeth ();
InObj .VMeth ();
}
}
}
为什么结果是:调用了基类BaseClass类的非虚方法NVMEth
调用了派生类InClass类的虚方法NMeth
调用了派生类InClass类的非虚方法NVMeth
调用了派生类InClass类的虚方法NMeth
对于virtual方法,这句等于废话。