[Q] new, virtual và override trong C#
Giả sử mình có class Window và class Button như trong hai trừong hợp sau:
Code:
public class Window
{
public void DrawWindow()
{
//........
}
}
public class Button:Window
{
public new void DrawWindow()
{
base.DrawWindow();
//.......
}
}
và
Code:
public class Window
{
public virtual void DrawWindow()
{
//.....
}
}
public class Button:Window
{
public override void DrawWindow()
{
base.DrawWindow();
//.....
}
}
Vậy sự khác nhau giữa hai cách implemention này là gì?
Ở cách thứ hai, nếu sử dụng:
Code:
public class Button:Window
{
public new virtual void DrawWindow()
{
//.......
}
}
thì khi code như sau:
Code:
Button button = new Button();
Window wbutton = new Button();
button.DrawWindow();
wbutton.DrawWindow();
thì DrawWindow() nào được gọi? có gì khác so với sử dụng override không? Nếu có thì khác nhau như thế nào vậy?
Cảm ơn mọi ý kiến