Sunday, October 28, 2018

Các cách để override hàm trong C#

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 new
2. 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
Previous Post
Next Post

post written by:

0 comments: