我有四个班级:
class Base
{
public void printf()
{
Console.WriteLine("I am from base !!!");
}
}
class DerivedA : Base
{
public void printf()
{
Console.WriteLine("I am from derived A !!!");
}
}
class DerivedB : Base
{
public void printf()
{
Console.WriteLine("I am from derived B !!!");
}
}
class testProgram
{
public void print(Base baseClass)
{
baseClass.printf();
}
}
我的目标是当我执行下面的代码时,在第4行它必须给我编译错误。
testProgram tP = new testProgram();
tP.print(baseClass);
tP.print(derivedA);
tP.print(derivedB);
我需要做哪些改变?
答案 0 :(得分:0)
在编译时你通常不能这样做(在运行时很容易)。
通过提供显式重载版本,您可以在特殊情况下使用特殊类:
public void print(Base baseClass)...
[ObsoleteAttribute("This method not supported for DerivedB.", true)]
public void print(DerivedB baseClass) {}
注意:这仅在编译时具有类型时才有用:
print(new DerivedB()); // error
print((Base)new DerivedB()); // success