Phương thức ảo và tính đa hình
Số trang: 8
Loại file: pdf
Dung lượng: 741.95 KB
Lượt xem: 21
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Hai đặc điểm mạnh nhất của kế thừa đó là khả năng sử dụng lại mã chương trình và đa hình (polymorphism). Đa hình là ý tưởng “sử dụng một giao diện chung cho nhiều phương thức khác nhau”, dựa trên phương thức ảo (virtual method). Nói cách khác, Tính đa hình cho phép một thao tác có các cách xử lý khác nhau trên các đối tượng khác nhau..Điều kiện cài đặt Tính đa hình Để thực hiện được tính đa hình ta phải thực hiện các bước sau: Lớp cơ sở đánh dấu phương thức ảo bằng từ...
Nội dung trích xuất từ tài liệu:
Phương thức ảo và tính đa hình Phương thức ảo và tính đa hình Virtual method & Polymorphism OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com1 Tính đa hình Hai đặc điểm mạnh nhất của kế thừa đó là Hai khả năng sử dụng lại mã chương trình và đa hình (polymorphism). Đa hình là ý tưởng “sử dụng một giao diện chung cho nhiều phương thức khác nhau”, dựa trên phương thức ảo (virtual method). Nói cách khác, Tính đa hình cho phép một thao tác có các cách xử lý khác nhau trên các đối tượng khác nhau. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com2 Điều kiện cài đặt Tính đa hình Để thực hiện được tính đa hình ta phải thực hiện các bước sau: Lớp cơ sở đánh dấu phương thức ảo bằng từ khóa virtual hoặc abstract virtual abstract Các lớp dẫn xuất định nghĩa lại phương thức ảo này (đánh dấu bằng từ khóa override) override Nhưng, những thành viên (member fields) or Nh or những thuộc tính (properties) và những hàm tĩnh (static) thì không được khai báo Virtual không Virtual OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com3 Tham chiếu giữa lớp cơ sở và lớp dẫn xuất Tham chiếu thuộc base class có thể trỏ đến Tham object thuộc derived class và có thể truy cập virtual method đã define lại trong derived class Nếu tham chiếu này trỏ tới object thuộc base class thì virtual method của lớp cơ sở được thực hiện. Nếu tham chiếu này trỏ tới object thuộc derived class thì virtual method đã được derived class định nghĩa lại được thực hiện. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com4 VD: minh họa Ta xay dựng 3 class: Ta Lớp Tau là lớp cơ sở Lớp TauChien và TauChoHang là lớp dẫn xuất từ lớp Tau class Tau { public void LayThongtin() { Console.WriteLine(“Day la chiec Tau”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com5 VD: class TauChien : Tau { public void LayThongTin() { Console.WriteLine(“Day la tau Chien ”); } } class TauChoHang : Tau { public void LayThongTin() { Console.WriteLine(“Day la tau Cho Hang”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com6 VD: class Program { static void Main(string[] args) { Tau a = new Tau(); TauChien b = new TauChien(); TauChoHang c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); c.LayThongTin(); } } // Màn hình sẽ xuất hiện điều gì? OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com7 VD: Kết quả xuất ra: Dau la chiec Tau Dau la tau Chien Dau la tau Cho Hang Nhưng ở đây ta chưa thấy được tính đa hình gì hết trong lập trình hướng đối tượng. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com8 Nếu ta khai báo 3 object đề là lớp Tau object class Program { static void Main(string[] args) { Tau a = new Tau(); Tau b = new TauChien(); Tau c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); c.LayThongTin(); } } // Màn hình sẽ xuất hiện điều gì? OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com9 VD: Kết quả xuất ra: Dau la chiec Tau Dau la chiec Tau Dau la chiec Tau Ta đã thấy được tính đa hình, nhưng chưa đầy đủ do việc kết xuất ra những kết không mong muốn OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com10 VD: Đa hình Để khắc phục tình trạng trên ta phải dùng từ khóa virtual cho phương thức của lớp cơ sở và từ khóa override cho tương ứng lớp dẫn xuất class Tau { public virtual void LayThongtin() { Console.WriteLine(“Day la chiec Tau”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com11 VD: class TauChien:Tau { public override void LayThongTin() { Console.WriteLine(“Day la tau Chien ”); } } class TauChoHang:Tau { public override void LayThongTin() { Console.WriteLine(“Day la tau Cho Hang”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com12 VD: class Program { static void Main(string[] args) { Tau a = new Tau(); Tau b = new TauChien(); Tau c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); Day la chiec Tau Day la tau Chien c.LayThongTin(); Day la tau Cho Hang } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com13 VD: thể hiện tính đa hình class Program { static void Main(string[] args) { Tau [] t = new Tau[3]; t[0] = new Tau(); t[1] = new TauChien(); t[2] = new TauChoHang(); for(int i=0; ...
Nội dung trích xuất từ tài liệu:
Phương thức ảo và tính đa hình Phương thức ảo và tính đa hình Virtual method & Polymorphism OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com1 Tính đa hình Hai đặc điểm mạnh nhất của kế thừa đó là Hai khả năng sử dụng lại mã chương trình và đa hình (polymorphism). Đa hình là ý tưởng “sử dụng một giao diện chung cho nhiều phương thức khác nhau”, dựa trên phương thức ảo (virtual method). Nói cách khác, Tính đa hình cho phép một thao tác có các cách xử lý khác nhau trên các đối tượng khác nhau. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com2 Điều kiện cài đặt Tính đa hình Để thực hiện được tính đa hình ta phải thực hiện các bước sau: Lớp cơ sở đánh dấu phương thức ảo bằng từ khóa virtual hoặc abstract virtual abstract Các lớp dẫn xuất định nghĩa lại phương thức ảo này (đánh dấu bằng từ khóa override) override Nhưng, những thành viên (member fields) or Nh or những thuộc tính (properties) và những hàm tĩnh (static) thì không được khai báo Virtual không Virtual OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com3 Tham chiếu giữa lớp cơ sở và lớp dẫn xuất Tham chiếu thuộc base class có thể trỏ đến Tham object thuộc derived class và có thể truy cập virtual method đã define lại trong derived class Nếu tham chiếu này trỏ tới object thuộc base class thì virtual method của lớp cơ sở được thực hiện. Nếu tham chiếu này trỏ tới object thuộc derived class thì virtual method đã được derived class định nghĩa lại được thực hiện. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com4 VD: minh họa Ta xay dựng 3 class: Ta Lớp Tau là lớp cơ sở Lớp TauChien và TauChoHang là lớp dẫn xuất từ lớp Tau class Tau { public void LayThongtin() { Console.WriteLine(“Day la chiec Tau”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com5 VD: class TauChien : Tau { public void LayThongTin() { Console.WriteLine(“Day la tau Chien ”); } } class TauChoHang : Tau { public void LayThongTin() { Console.WriteLine(“Day la tau Cho Hang”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com6 VD: class Program { static void Main(string[] args) { Tau a = new Tau(); TauChien b = new TauChien(); TauChoHang c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); c.LayThongTin(); } } // Màn hình sẽ xuất hiện điều gì? OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com7 VD: Kết quả xuất ra: Dau la chiec Tau Dau la tau Chien Dau la tau Cho Hang Nhưng ở đây ta chưa thấy được tính đa hình gì hết trong lập trình hướng đối tượng. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com8 Nếu ta khai báo 3 object đề là lớp Tau object class Program { static void Main(string[] args) { Tau a = new Tau(); Tau b = new TauChien(); Tau c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); c.LayThongTin(); } } // Màn hình sẽ xuất hiện điều gì? OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com9 VD: Kết quả xuất ra: Dau la chiec Tau Dau la chiec Tau Dau la chiec Tau Ta đã thấy được tính đa hình, nhưng chưa đầy đủ do việc kết xuất ra những kết không mong muốn OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com10 VD: Đa hình Để khắc phục tình trạng trên ta phải dùng từ khóa virtual cho phương thức của lớp cơ sở và từ khóa override cho tương ứng lớp dẫn xuất class Tau { public virtual void LayThongtin() { Console.WriteLine(“Day la chiec Tau”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com11 VD: class TauChien:Tau { public override void LayThongTin() { Console.WriteLine(“Day la tau Chien ”); } } class TauChoHang:Tau { public override void LayThongTin() { Console.WriteLine(“Day la tau Cho Hang”); } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com12 VD: class Program { static void Main(string[] args) { Tau a = new Tau(); Tau b = new TauChien(); Tau c = new TauChoHang(); a.LayThongTin(); b.LayThongTin(); Day la chiec Tau Day la tau Chien c.LayThongTin(); Day la tau Cho Hang } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com13 VD: thể hiện tính đa hình class Program { static void Main(string[] args) { Tau [] t = new Tau[3]; t[0] = new Tau(); t[1] = new TauChien(); t[2] = new TauChoHang(); for(int i=0; ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ C++ công nghệ thông tin lập trình C tin học văn phòng tin học đại cương tài liệu học vi tínhGợi ý tài liệu liên quan:
-
52 trang 430 1 0
-
73 trang 427 2 0
-
Nhập môn Tin học căn bản: Phần 1
106 trang 329 0 0 -
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 315 0 0 -
Giáo trình Tin học văn phòng: Phần 2 - Bùi Thế Tâm
65 trang 315 0 0 -
74 trang 300 0 0
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 299 0 0 -
96 trang 293 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 281 0 0