在以下情况下发生的重载和覆盖:编译或运行时

时间:2011-03-19 07:19:00

标签: oop

重载和覆盖:哪一个在编译时发生,哪一个在运行时发生?

2 个答案:

答案 0 :(得分:6)

这取决于您使用的是哪种语言,以及 您使用的语言。

例如,在Java中,重载分辨率始终在编译时执行,并且在执行时执行覆盖分辨率。

在C#中仍然通常为true - 但如果您使用的是C#4的动态类型,则在执行时也会执行重载解析:

static void Foo(int y) {}
static void Foo(string y) {}

...
dynamic x = 10;
Foo(x); // Calls Foo(int)
x = "hello";
Foo(x); // Calls Foo(string)

还有很多其他语言也表现得很动态。因此,您确实需要了解当时使用的语言的行为。

答案 1 :(得分:2)

重载 - >编译时间 覆盖 - >运行