Có 2 cách để override hàm trong C#
1. Lớp cha viết bình thường, lớp con dùng từ khóa new2. Lớp cha dùng từ khóa virtual lớp con dùng từ khóa override
Hai cách này có gì khác nhau??
- new dùng để hide một member ở base class
- virtual - override dùng để extend một hàm của base class
Ví dụ cho dễ hiểu:
public class Parent
{
public virtual void SayHello()
{
Console.WriteLine("Say hello from Parent");
}
public void SayGoodbye()
{
Console.WriteLine("Say goodbye from Parent");
}
}
public class Child : Parent
{
public override void SayHello()
{
Console.WriteLine("Say hello from Child");
}
public new void SayGoodbye()
{
Console.WriteLine("Say goodbye from Child");
}
}
Child child = new Child();
child.SayHello(); // Say hello from Child
child.SayGoodbye(); // Say goodbye from Child
Console.WriteLine("------------------");
Parent parent = (Parent)child; // OR Parent parent = new Child();
parent.SayHello(); // Say hello from Child
parent.SayGoodbye(); // Say goodbye from Parent
Console.Read();
Thien Nguyen
0 comments: