Tab Menu

Phân biệt phương thức Virtual - Abstract - C#

Title Differrence between Virtual and Abstract method.

Ta đã biết các từ khóa Virtual hoặc Abstract (bên lớp cơ sở) và Override (trên lớp dẫn xuất) hỗ trợ tạo đa hình (Polymorphism) cho các phương thức (Method) của object (1 trong những điểm mạnh của OOP). Phương thức của lớp cha (cơ sở) sử dụng với từ khóa Virtual hoặc Abstract,
tạo phương thức cùng tên ở lớp con (dẫn xuất) với Override..Vậy là ta đã có 1 Method đa hình. Vậy khi nào sử dụng Virtual, khi nào dùng Abstract ở lớp cơ sở (lớp Cha)?

Sự khác nhau:

Điểm đầu tiên là Virtual cho phép lớp Con không nhất thiết phải tạo Override cho method Virtual ở lớp Cha. Ngược lại Abstract thì bắt buộc.
Abstract Class Cha 
{
....
public virtual void AAA() { }
public abstract void BBB() ;
....
}

Class Con : Cha
{
....
public override void AAA() { } // có thể không cần hàm này 
public override void BBB() { } // buộc có.
....
}

Thứ 2 là cách khai báo, method Virtual có các hàm bên trong còn Abstract thì tuyệt tối không.
public virtual void AAA() { code here }
public abstract void BBB() ;

Thứ 3 là method abstract phải nằm trong class abstract như bên dưới.
Abstract Class Cha 
{
public abstract void BBB() ;
}

Hiện có 2 comments

Post a Comment

Bạn có thể tự do cho ý kiến, thảo luận về bài viết này nhưng phải theo những điều khoản sau:
- Phải nghiêm túc, không dung tục, không spam.
- Nội dung phải liên quan đến bài viết.
- Không mang tính chất chính trị...
- Hạn chế sử dụng Ẩn danh, hãy dùng Tên/URL để thay thế.
Lưu ý : Có thể sử dụng tag HTML cơ bản trong comment: br, b, i, u, a href= ...

:)
:(
;)
:D
=))
:-/
:x
I-)
@-)
=D:
:-q
:-w
[-X
B-)
:((
:-B
:-h
:x(
:-*
~O)
@};-

About

RSS
Coming soon... :))