Lập trình C#

Từ khóa sealed – niêm phong trong C#

Từ khóa sealed - niêm phong trong C#
Được viết bởi Minh Hoàng

Series lập trình C#, ngôn ngữ lập trình hiện đại và mạnh mẽ.

Trong bài viết này chúng ta sẽ cùng tìm hiểu về từ khóa sealed và ý nghĩa của nó trong lập trình C#, với những nội dung sau:

  1. Từ khóa sealed là gì?
  2. Một số đặc điểm của từ khóa sealed
  3. Sử dụng từ khóa sealed khi nào?
  4. Cách sử dụng từ khóa sealed
    • #1. Đối với class
    • #2. Đối với method
1. Từ khóa sealed là gì?
1. Từ khóa sealed là gì?

sealed có nghĩa thuần Việt là niêm phong. Trong C#, cho phép bạn dùng từ khóa sealed để khai báo cho một lớp hoặc một phương thức. Đúng theo ý nghĩa của nó, khi bạn sử dụng từ khóa này cho lớp thì lớp đó không được kế thừa, còn khi sử dụng cho phương thức thì phương thức đó không được phép override.

2. Một số đặc điểm của từ khóa sealed
2. Một số đặc điểm của từ khóa sealed

sealed class có thể kế thừa một lớp khác, nhưng không một lớp nào được kế thừa từ nó. Khi một lớp đang được lớp khác kế thừa thì trong lớp đó không được sử dụng từ khóa sealed để khai báo cho phương thức.

– Trong sealed class các phương thức không được sử dụng phạm vi truy cập là protected, và cũng không có phương thức virtual, vì hai từ khóa này được dùng trong việc kế thừa.

sealed class không thể là lớp trừu tượng abstract class, vì trong abstract class thì có phương thức abstract bắt buộc phải kế thừa ở lớp con.

sealed class giống như final class trong java.

– Vì sealed method không được phép override, nên trong định nghĩa của sealed method nó luôn luôn đi kèm với từ khóa override.

– Trong sealed class không nhất thiết phải có sealed method.

3. Sử dụng từ khóa sealed khi nào?
3. Sử dụng từ khóa sealed khi nào?

Sử dụng khi bạn phát triển một thư viện library nào đấy, trong đó có một lớp đã đầy đủ những chức năng cần thiết cho một nghiệp vụ nhất định rồi và bạn không muốn lớp này được dẫn xuất, kế thừa, mở rộng bởi các lập trình viên khác nữa.

4. Cách sử dụng từ khóa sealed
4. Cách sử dụng từ khóa sealed

#1. Đối với lớp
– Cú pháp:

[<quyen_truy_cap>] sealed class <Ten_lop>
{
   ...
}

Trong đó: quyen_truy_cap : là public hay private, protected,… Có thể có hoặc không.

– Minh họa:

sealed class A
{
	public void SomeMethod() { ; }

	public void SomeOtherMethod() { ; }
}


#2. Đối với phương thức
– Cú pháp:

<quyen_truy_cap> sealed override <kieu_tra_ve> <Ten_phuong_thuc>([<danh_sach_tham_so>])
{
   ...
}

Trong đó:
quyen_truy_cap : là public hay private, protected,…
danh_sach_tham_so : có thể có hoặc không.

– Minh họa:

public class A
{
	public virtual void SomeMethod() { ; }

	public virtual void SomeOtherMethod() { ; }
}

public class B : A		// class B kế thừa class A
{
	// Do not override this method any more
	public sealed override void SomeMethod() { ; }

	public override void SomeOtherMethod() { ; }
}

public class C : B      // class C kế thừa class B
{
	// You can't override SomeMethod, since it declared as "sealed" in the base class
	// public override void SomeMethod() { ; }

	// But you can override SomeOtherMethod() if you want
	public override void SomeOtherMethod() { ; }
}
Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi! Minh Hoàng Blog | Nào cùng vui hehe


Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp người đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[…]

Bình luận của bạn

1 bình luận cho bài viết "Từ khóa sealed – niêm phong trong C#"

avatar
Sắp xếp theo:   Mới nhất | Cũ nhất | Thích nhiều nhất
trackback

[…] Một lớp trừu tượng – abstract class không thể là một sealed class. […]

Chúc bạn có một cuộc sống ngoại hạng!