• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Virtual và Non-virtual của C#, có thể làm gì?

Nơi trao đổi, hỏi đáp về hướng đối tượng (OOP - Object-Oriented Programming), không giới hạn về ngôn ngữ lập trình
Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Virtual và Non-virtual của C#, có thể làm gì?

Gửi bàigửi bởi vo_minhdat2007 » T.Ba 24/01/2012 1:00 pm

Mở hàng box OOP năm mới nào, mời :)



Hình đại diện của người dùng
TheDark
Guru
Guru
Bài viết: 188
Ngày tham gia: T.Năm 04/11/2010 3:56 pm
Đến từ: Mang Thít - Vĩnh Long
Has thanked: 6 time
Been thanked: 33 time

Re: Virtual và Non-virtual của C#, có thể làm gì?

Gửi bàigửi bởi TheDark » T.Ba 24/01/2012 5:48 pm

- Thật ngại khi trả lời topic. Vì mình cũng chưa hiểu rõ về khái niệm này lắm.

Nôm na thế này.
- Khi nói đến OOP ta thường nói đến ba điểm mạnh của OOP. Và "Đa hình" là một trong những điểm mạnh thường nói đến nhất.
- "Đa Hình" có thể hiểu là với cùng một hàm, nhưng trong những trường hợp khác nhau ta sẽ có những kết quả khác nhau.
- Chương trình sẽ dựa vào 2 điểm để phân biệt khi nào trả về kết quả như thế nào. Hai điểm đó là:

+Số lượng và kiểu của các đối số - Đa hình tĩnh (non-vitual). Với kiểu đa hình này, thì các hàm được phân biệt với nhau bằng số lượng và kiểu của các đối số. Tức cùng một hàm, nhưng với những cách truyền tham số khác nhau, chương trình sẽ có cách xử lí khác nhau.

+Kiểu lớp mà thực thể thực sự thuộc vào - Đa hình động (vitual). Với kiểu đa hình này, thì cùng một hàm nhưng được gọi từ những lớp khác nhau thì sẽ xử lý khác nhau.

Nói sách vở thì vậy thôi. Chứ mình thật sự hiểu là: Đối với một phương thức, mà ta muốn khai báo lại khi thừa kế thì trong lớp cha ta phải khai báo virtual để trong lớp con ta không cần khai báo protected override

Mình cũng chưa hiểu tại sao C# lại phân biệt virtual và non-virtual
Với java thì các method đều được hiểu là virtual. Tức ta có thể khai báo đè lên lớp cha thoải mái. Nhưng C# thì khác, chúng ta phải khai báo rõ ràng.

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Virtual và Non-virtual của C#, có thể làm gì?

Gửi bàigửi bởi vo_minhdat2007 » T.Ba 24/01/2012 6:09 pm

Với java thì các method đều được hiểu là virtual. Tức ta có thể khai báo đè lên lớp cha thoải mái. Nhưng C# thì khác, chúng ta phải khai báo rõ ràng.


Java dùng từ khoá final với phương thức thì nó sẽ trở thành non-virtual.

Trên bạn nói về lý thuyết, mời bạn và mọi người tiếp tục thảo luận chi tiết hơn, và thử nêu ứng dụng cụ thể của nó xem :)


Quay về “Lập trình hướng đối tượng (OOP)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách