Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Interface trong C# là gì?
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="uocmo_kchodoi" data-source="post: 177537" data-attributes="member: 165510"><p style="text-align: center"><strong><span style="color: #ff0000">INTERFACE (LỚP GIAO DIỆN) TRONG C#</span></strong></p> <p style="text-align: center"><strong><span style="color: #ff0000"></span></strong></p><p><strong>Khái niệm: </strong>Interface (nhiều tài liệu gọi là giao diện hoặc lớp giao tiếp) là 1 tập các thành phần chỉ có khai báo mà không có phần định nghĩa.</p><p></p><p><strong>Mục đích sử dụng:</strong></p><p><strong></strong></p><p>Một interface giống như class, nhưng không có phần thực thi. Trong đó interface chỉ chứa các khai báo:</p><ul> <li data-xf-list-type="ul">Sự kiện (event)</li> <li data-xf-list-type="ul">Indexer (một dạng thuộc tính đặc biệt trong C# cho phép lấy giá trị dựa trên chỉ mục)</li> <li data-xf-list-type="ul">Phương thức (method)</li> <li data-xf-list-type="ul">Thuộc tính (property)</li> </ul><p>Một lý do tại sao interface chỉ chứa khai báo vì nó được kế thừa để thực thi bởi cả các lớp (class) và cấu trúc (struct)</p><p></p><p><strong>Vậy, đâu là lợi thế khi interface không thực thi các chức năng?</strong></p><p></p><p>Đó là vì trong các kiến trúc hệ thống làm việc với nhau theo dạng cắm – chạy (plug-n-play), các thành phần ở đó sẽ trao đổi thông tin cho nhau. Khi trao đổi thông tin, các thành phần sẽ thực thi chung interface, việc này có thể được sử dụng mà không cần phải viết thêm code. Theo đó, các interface sẽ bắt buộc các thành phần cung cấp đầy đủ các thành viên (member) ở dạng công khai (public) để được sử dụng theo cùng một cách thống nhất.</p><p>Bởi vì các interface được thực thi bởi các lớp và cấu trúc dẫn xuất nên chúng định nghĩa ra một bản giao kèo (contract).</p><p></p><p><strong>Một số đặc tính nổi bật của Interface</strong></p><ul> <li data-xf-list-type="ul">Interface có thể được kế thừa từ nhiều interface cơ sở (base interface)</li> <li data-xf-list-type="ul">Các class hay struct có thể thực thi cùng lúc nhiều interface</li> <li data-xf-list-type="ul">Interface chỉ chứa các khai báo thành viên event, indexer, method, property.</li> <li data-xf-list-type="ul">Các thành viên của interface đều ở dạng công khai (public)</li> <li data-xf-list-type="ul">Interface có thể sử dụng với generic để tạo thành các generic interface</li> <li data-xf-list-type="ul">Các khai báo thành viên của interface có thể ở dạng generic</li> </ul><p></p><p><span style="font-size: 18px"><strong>Khai báo Interface trong C#</strong></span></p><p><span style="font-size: 18px"></span></p><p>Các Interface được khai báo bởi sử dụng từ khóa interface trong C#. Nó tương tự như khai báo lớp. Theo mặc định, các lệnh Interface là puclic. Ví dụ sau minh họa một khai báo Interface trong C#:</p><p></p><p><em><span style="color: #5900b3">public interface ITransactions</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> // các thành viên của interface</span></em></p><p><em><span style="color: #5900b3"> </span></em></p><p><em><span style="color: #5900b3"> //các phương thức</span></em></p><p><em><span style="color: #5900b3"> void hienThiThongTinGiaoDich();</span></em></p><p><em><span style="color: #5900b3"> double laySoLuong();</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p><span style="font-size: 18px"><strong>Ví dụ</strong></span></p><p><span style="font-size: 18px"></span></p><p>Sau đây là ví dụ minh họa trình triển khai của Interface trên: tạo 2 lớp có tên lần lượt làGiaoDichHangHoa, TestCsharp và một interface có tên là GiaoDich</p><p></p><p>interface GiaoDich</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public interface GiaoDich</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> // cac thanh vien cua interface</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> //cac phuong thuc</span></em></p><p><em><span style="color: #5900b3"> void hienThiThongTinGiaoDich();</span></em></p><p><em><span style="color: #5900b3"> double laySoLuong();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp GiaoDichHangHoa kế thừa interface GiaoDich</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class GiaoDichHangHoa : GiaoDich</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private string ma_hang_hoa;</span></em></p><p><em><span style="color: #5900b3"> private string ngay;</span></em></p><p><em><span style="color: #5900b3"> private double so_luong;</span></em></p><p><em><span style="color: #5900b3"> public GiaoDichHangHoa()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> ma_hang_hoa = " ";</span></em></p><p><em><span style="color: #5900b3"> ngay = " ";</span></em></p><p><em><span style="color: #5900b3"> so_luong = 0.0;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> public GiaoDichHangHoa(string c, string d, double a)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> ma_hang_hoa = c;</span></em></p><p><em><span style="color: #5900b3"> ngay = d;</span></em></p><p><em><span style="color: #5900b3"> so_luong = a;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> </span></em></p><p><em><span style="color: #5900b3"> public double laySoLuong()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return so_luong;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> </span></em></p><p><em><span style="color: #5900b3"> public void hienThiThongTinGiaoDich()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Ma hang hoa: {0}", ma_hang_hoa);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Ngay giao dich: {0}", ngay);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("So luong: {0}", laySoLuong());</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng GiaoDichHangHoa</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Interface trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Vi du minh hoa interface");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("--------------------------");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> //tao cac doi tuong GiaoDichHangHoa</span></em></p><p><em><span style="color: #5900b3"> GiaoDichHangHoa t1 = new GiaoDichHangHoa("001", "8/10/2012", 78900.00);</span></em></p><p><em><span style="color: #5900b3"> GiaoDichHangHoa t2 = new GiaoDichHangHoa("002", "9/10/2012", 451900.00);</span></em></p><p><em><span style="color: #5900b3"> t1.hienThiThongTinGiaoDich();</span></em></p><p><em><span style="color: #5900b3"> t2.hienThiThongTinGiaoDich();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.</p><p></p><p style="text-align: right">Nguồn: vietjack.com</p></blockquote><p></p>
[QUOTE="uocmo_kchodoi, post: 177537, member: 165510"] [CENTER][B][COLOR=#ff0000]INTERFACE (LỚP GIAO DIỆN) TRONG C# [/COLOR][/B][/CENTER] [B]Khái niệm: [/B]Interface (nhiều tài liệu gọi là giao diện hoặc lớp giao tiếp) là 1 tập các thành phần chỉ có khai báo mà không có phần định nghĩa. [B]Mục đích sử dụng: [/B] Một interface giống như class, nhưng không có phần thực thi. Trong đó interface chỉ chứa các khai báo: [LIST] [*]Sự kiện (event) [*]Indexer (một dạng thuộc tính đặc biệt trong C# cho phép lấy giá trị dựa trên chỉ mục) [*]Phương thức (method) [*]Thuộc tính (property) [/LIST] Một lý do tại sao interface chỉ chứa khai báo vì nó được kế thừa để thực thi bởi cả các lớp (class) và cấu trúc (struct) [B]Vậy, đâu là lợi thế khi interface không thực thi các chức năng?[/B] Đó là vì trong các kiến trúc hệ thống làm việc với nhau theo dạng cắm – chạy (plug-n-play), các thành phần ở đó sẽ trao đổi thông tin cho nhau. Khi trao đổi thông tin, các thành phần sẽ thực thi chung interface, việc này có thể được sử dụng mà không cần phải viết thêm code. Theo đó, các interface sẽ bắt buộc các thành phần cung cấp đầy đủ các thành viên (member) ở dạng công khai (public) để được sử dụng theo cùng một cách thống nhất. Bởi vì các interface được thực thi bởi các lớp và cấu trúc dẫn xuất nên chúng định nghĩa ra một bản giao kèo (contract). [B]Một số đặc tính nổi bật của Interface[/B] [LIST] [*]Interface có thể được kế thừa từ nhiều interface cơ sở (base interface) [*]Các class hay struct có thể thực thi cùng lúc nhiều interface [*]Interface chỉ chứa các khai báo thành viên event, indexer, method, property. [*]Các thành viên của interface đều ở dạng công khai (public) [*]Interface có thể sử dụng với generic để tạo thành các generic interface [*]Các khai báo thành viên của interface có thể ở dạng generic [/LIST] [SIZE=5][B]Khai báo Interface trong C#[/B] [B][/B][/SIZE] Các Interface được khai báo bởi sử dụng từ khóa interface trong C#. Nó tương tự như khai báo lớp. Theo mặc định, các lệnh Interface là puclic. Ví dụ sau minh họa một khai báo Interface trong C#: [I][COLOR=#5900b3]public interface ITransactions { // các thành viên của interface //các phương thức void hienThiThongTinGiaoDich(); double laySoLuong(); }[/COLOR][/I] [SIZE=5][B]Ví dụ[/B] [B][/B][/SIZE] Sau đây là ví dụ minh họa trình triển khai của Interface trên: tạo 2 lớp có tên lần lượt làGiaoDichHangHoa, TestCsharp và một interface có tên là GiaoDich interface GiaoDich [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public interface GiaoDich { // cac thanh vien cua interface //cac phuong thuc void hienThiThongTinGiaoDich(); double laySoLuong(); } }[/COLOR][/I] Lớp GiaoDichHangHoa kế thừa interface GiaoDich [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class GiaoDichHangHoa : GiaoDich { private string ma_hang_hoa; private string ngay; private double so_luong; public GiaoDichHangHoa() { ma_hang_hoa = " "; ngay = " "; so_luong = 0.0; } public GiaoDichHangHoa(string c, string d, double a) { ma_hang_hoa = c; ngay = d; so_luong = a; } public double laySoLuong() { return so_luong; } public void hienThiThongTinGiaoDich() { Console.WriteLine("Ma hang hoa: {0}", ma_hang_hoa); Console.WriteLine("Ngay giao dich: {0}", ngay); Console.WriteLine("So luong: {0}", laySoLuong()); } } }[/COLOR][/I] Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng GiaoDichHangHoa [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { static void Main(string[] args) { Console.WriteLine("Interface trong C#"); Console.WriteLine("Vi du minh hoa interface"); Console.WriteLine("--------------------------"); //tao cac doi tuong GiaoDichHangHoa GiaoDichHangHoa t1 = new GiaoDichHangHoa("001", "8/10/2012", 78900.00); GiaoDichHangHoa t2 = new GiaoDichHangHoa("002", "9/10/2012", 451900.00); t1.hienThiThongTinGiaoDich(); t2.hienThiThongTinGiaoDich(); Console.ReadKey(); } } }[/COLOR][/I] Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. [RIGHT]Nguồn: vietjack.com[/RIGHT] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Interface trong C# là gì?
Top