Danh mục

Giáo trình hướng dẫn truy cập phương thức gán đối tượng cho một giao diện đối lập trừu tượng p6

Số trang: 5      Loại file: pdf      Dung lượng: 865.92 KB      Lượt xem: 8      Lượt tải: 0    
Thư viện của tui

Hỗ trợ phí lưu trữ khi tải xuống: miễn phí Tải xuống file đầy đủ (5 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Thật vậy, một phương thức được khai báo tường minh thì sẽ không được khai báo với các từ khóa bổ sung truy cập: abstract, virtual, override, và new. Một địều quan trọng khác là chúng ta không thể truy cập phương thức thực thi tường minh thông qua chính đối tượng. Khi chúng ta viết:
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn truy cập phương thức gán đối tượng cho một giao diện đối lập trừu tượng p6 Ngôn Ngữ Lập Trình C#Thật vậy, một phương thức được khai báo tường minh thì sẽ không được khai báo với các từkhóa bổ sung truy cập: abstract, virtual, override, và new.Một địều quan trọng khác là chúng ta không thể truy cập phương thức thực thi tường minhthông qua chính đối tượng. Khi chúng ta viết: theDoc.Read();Trình biên dịch chỉ hiểu rằng chúng ta thực thi phương thức giao diện ngầm định choIStorable. Chỉ một cách duy nhất truy cập các phương thức thực thi tường minh là thông quaviệc gán cho giao diện để thực thi: ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); }Sử dụng thực thi tường minh được áp dụng trong ví dụ 8.5 Ví dụ 8.5: Thực thi tường minh.-----------------------------------------------------------------------------using System;interface IStorable{ void Read(); void Write();}interface ITalk{ void Talk(); void Read();}// lớp Document thực thi hai giao diệnpublic class Document : IStorable, ITalk{ // bộ khởi dựng public Document( string s) { Console.WriteLine(“Creating document with: {0}”,s); } // tạo phương thức ảo public virtual void Read() { 198 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Console.WriteLine(“Implementing IStorable.Read”); } // thực thi bình thường public void Write() { Console.WriteLine(“Implementing IStorable.Write”); } // thực thi tường minh void ITalk.Read() { Console.WriteLine(“Implementing ITalk.Read”); } public void Talk() { Console.WriteLine(“Implementing ITalk.Talk”); }}public class Tester{ static void Main() { // tạo đối tượng Document Document theDoc = new Document(“Test Document”); IStorable isDoc = theDoc as IStorable; if ( isDoc != null ) { isDoc.Read(); } ITalk itDoc = theDoc as ITalk; if ( itDoc != null ) { itDoc.Read(); } theDoc.Read(); theDoc.Talk(); }}----------------------------------------------------------------------------- 199 Thực Thi Giao Diện Ngôn Ngữ Lập Trình C# Kết quả:Creating document with: Test DocumentImplementing IStorable.ReadImplementing ITalk.ReadImplementing IStorable.ReadImplementing ITalk.Talk-----------------------------------------------------------------------------Lựa chọn việc thể hiện phương thức giao diệnNhững người thiết kế lớp có thể thu được lợi khi một giao diện được thực thi thông qua thựcthi tường minh và không cho phép các thành phần client của lớp truy cập trừ phi sử dụngthông qua việc gán cho giao diện. Giả sử nghĩa của đối tượng Document chỉ ra rằng nó thực thi giao diện IStorable,nhưng không muốn phương thức Read() và Write() là phần giao diện public của lớpDocument. Chúng ta có thể sử dụng thực thi tường minh để chắc chắn chỉ có thể truy cậpthông qua việc gán cho giao diện. Điều này cho phép chúng ta lưu trữ ngữ nghĩa của lớpDocument trong khi vẫn có thể thực thi được giao diện IStorable. Nếu thành phần clientmuốn đối tượng thực thi giao diện IStorable, nó có thể thực hiện gán tường minh cho giaodiện để gọi các phương thức thực thi giao diện. Nhưng khi sử dụng đối tượng Document thìnghĩa là không có phương thức Read() và Write(). Thật vậy, chúng ta có thể lựa chọn thể hiện những phương thức thông qua thực thitường minh, do đó chúng ta có thể trưng bày một vài phương thức thực thi như là một phầncủa lớp Document và một số phương thức khác thì không. Trong ví dụ 8.5, đối tượngDocument trưng bày phương thức Talk() như là phương thức của lớp Document, nhưngphương thức Talk.Read() chỉ được thể hiện thông qua gán cho giao diện. Thậm chí nếuIStorable không có phương thức Read(), chúng ta cũng có thể chọn thực thi tường minhphương thức Read() để phương thức không được thể hiện ra bên ngoài như các phương thứccủa Document. Chúng ta lưu ý rằng vì thực thi giao diện tường minh ngăn ngừa việc sử dụng từ khóavirtual, một lớp dẫn xuất có thể được hỗ trợ để thực thi lại phương thức. Do đó, nếu Notedẫn xuất từ Document, nó có thể được thực thi lại phương thức Talk.Read() bởi vì lớpDocument thực thi phương thức Talk.Read() không phải ảo.Ẩ n thành viênNgôn ngữ C# ch ...

Tài liệu được xem nhiều: