我是 C# 新手,我不明白为什么编译器不会抱怨这段代码。这是类的层次结构:
interface IAble
{
void f();
}
class AAble : IAble
{
public void f()
{
Debug.Log("---->> A - Able");
}
}
class BAble : AAble
{
public void f()
{
Debug.Log("---->> B - Able");
}
}
执行代码:
IAble i = new BAble();
i.f();
执行---->> A - Able
时打印。为什么?编译器如何知道应该调用什么函数?
当决定调用什么函数时——运行时还是编译时?如果我玷污了一个新班级class CAble : IAble
怎么办?