![]() |
1
2
因为
在编译时作出决定:
接口实现标记为
|
![]() |
2
1
通常会有一个编译器警告,因为它隐藏了一个方法。但在C#中,对非虚函数这样做是合法的。当然,如果它是一个虚拟函数,那么很明显,该方法的B版本将运行。 因为您将它声明为IAble并且它是非虚拟的,所以编译器将它读取为IAble。如果它被声明为virtual,编译器将扫描继承的层次结构,并将看到它的实际类是一个BAble,它将运行BAble代码。 |
![]() |
3
1
当我们向上抛的时候
我们可以直接从接口继承,这将告诉编译器应该使用哪个接口实现:
输出:
或者我们可以使用多态性。这将告诉编译器 使用重写函数:
|
![]() |
4
1
当您在派生类中定义与基类中具有相同签名的方法时,您是 躲藏 是的。
那么结果就是
你所期望的是
覆盖
|