Derived class 的 print 没有被调用,为什么?
Derived class's print isn't called, why?
我有这个代码。我不明白为什么不调用派生的 class 的打印。我相信这是因为 'new'。我不确定它的功能。
using System;
class BaseClass
{
public void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
new public void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
class Program
{
public static void Main()
{
BaseClass b;
b = new BaseClass();
b.Print();
b = new DerivedClass();
b.Print();
}
}
因为 Print
方法不是虚拟的,并且您使用 new
关键字将其明确标记为完全独立于基础 class' 方法。将方法更改为 virtual 并在派生的 class:
中覆盖它
class BaseClass
{
public virtual void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
public override void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
是的,因为你的 b 是 BaseClass
Type
并且你没有 virtual
功能 Print
在它里面你没有你不能 override
它在 DerivedClass
中,将被称为 BaseClass
Print()
.
我有这个代码。我不明白为什么不调用派生的 class 的打印。我相信这是因为 'new'。我不确定它的功能。
using System;
class BaseClass
{
public void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
new public void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
class Program
{
public static void Main()
{
BaseClass b;
b = new BaseClass();
b.Print();
b = new DerivedClass();
b.Print();
}
}
因为 Print
方法不是虚拟的,并且您使用 new
关键字将其明确标记为完全独立于基础 class' 方法。将方法更改为 virtual 并在派生的 class:
class BaseClass
{
public virtual void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
public override void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
是的,因为你的 b 是 BaseClass
Type
并且你没有 virtual
功能 Print
在它里面你没有你不能 override
它在 DerivedClass
中,将被称为 BaseClass
Print()
.