Bài giảng Lập trình C# - Bài 6: Kế thừa và Đa hình

Khái niệm kế thừa Cài đặt kế thừa Từ khóa protected Sealing class Từ khóa base Từ khóa new Method Overriding Polymorphism(đa hình)

ppt16 trang | Chia sẻ: candy98 | Lượt xem: 454 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Lập trình C# - Bài 6: Kế thừa và Đa hình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 6Kế thừa và Đa hìnhÔn tập lại bài cũLớp và đối tượngConstructor và DestructorGarbage CollectorCon trỏ thisPhương thức(Method)Chồng phương thức(Method Overloading)Chông toán tử(Operator Overloading)Access modifier (phạm vi truy xuất)Từ khóa ref và outSubject name / Session# / 3 of TotalpageNội dung trình bàyKhái niệm kế thừaCài đặt kế thừaTừ khóa protectedSealing classTừ khóa baseTừ khóa newMethod OverridingPolymorphism(đa hình)Kế thừa và đa hìnhKhái niệm kế thừaKế thừa là một đặc điểm quan trọng của ngôn ngữ lập trình hướng đối tượngKế thừa là khả năng cho phép sử dụng lại những đọan code đã có sẵn do đó sẽ tiết kiệm thời gian lập trìnhLớp A kế thừa từ lớp B thì lớp A gọi là derived class(child class/subclass), lớp B gọi là base class(parent class/super class)Có 2 loại kế thừa:Đơn kế thừa. Ví dụ kế thừa lớpĐa kế thừa. Ví dụ kế thừa InterfaceCài đặt kế thừa:Trong đó là classA kế thừa từ classBTrong lớp classA có thể truy xuất đến các thành phần trong lớp classB nếu thành phần đó có phạm vi truy xuất là proteced hoặc publicCác construtor không được kế thừaVí dụ DEMO kế thừaKế thừa và đa hìnhTừ khóa protecedĐể qui định phạm vi truy xuất các thành phần bên trong một lớpMột thành phần(thuộc tính, phương thức) đượcKế thừa và đa hìnhSealing classMột lớp có từ khóa sealed có nghĩa là lớp đó không cho phép các lớp khác kế thừa.sealed class classOne {//Class Implementation}Kế thừa và đa hìnhTừ khóa baseDùng để truy cập đến các thành phần(thuộc tính, phương thức) bên trong lớp cơ sở từ lớp dẫn xuất(lớp kế thừa)Dùng để gọi constructor của lớp cơ sở khi tạo đối tượng của lớp dẫn xuất.Không được sử dụng từ khóa base trong phương thức tĩnh.Ví dụ DEMO từ khóa baseKế thừa và đa hìnhTừ khóa newDùng để che dấu đi các thuộc tính và phương thức của lớp cơ sở.Do đó trong lớp dẫn xuất, muốn gọi các thuộc tính hoặc phương thức ở lớp cơ sở, sử dụng từ khóa baseVí dụ minh họa từ khóa newKế thừa và đa hìnhMethod overridingLà khả năng cho phép lớp dẫn xuất định nghĩa lại(override/redefine) các phương thức của lớp cơ sở.Phương thức ở lớp cơ sở và lớp dẫn xuất có cùng một prototype(signature) nhưng thưng thực hiện các công việc khác nhau.Để override (ghi đè) một phương thức ơ lớp cơ sở:Đặt từ khóa virtual trước phương thức trong lớp cơ sởĐặt từ khóa override trước phương thức muốn override trong lớp dẫn xuấtKế thừa và đa hìnhOverriding methodCú pháp khai báoVí dụ DEMO method overridingKế thừa và đa hình[access modifier] virtual [return-type] name( [parameters-list] ){ //virtual method implementation}[access modifier] override [return-type] name( [parameters-list] ){ //virtual method implementation}Polymorphism(đa hình)Nói ở ngữ cảnh chung chung, đa hình là khả năng biến hóa thành nhiều hình dạng khác nhau.Trong lập trình hướng đối tượng: thế nào là đa hình?Ví dụ chúng ta có một lớp shape(hình vẽ), trong lớp shape có phương thức Area(). Sau đó các lớp Square(hình vuông), Rectangle(hình CN), Circle(đường tròn) kế thừa từ lớp Shape.Trong lớp Square override phương thức Area() trong lớp shape và nó thực hiện công việc tính diện tích của hình vuông.Trong lớp Rectangle cũng override phương thức Area() của lớp shape và nó thực hiện công việc tính diện tích của hình chữ nhậtKế thừa và đa hìnhLớp Circle override phương thức Area() của lớp shape và thực hiện công việc tính diện tích của hình tròn.Bây giờ khởi tạo đối tượng của 3 lớp Square objSquare = new Square();Rectangle objRectangle = new Rectangle();Circle objCircle = new Circle();Shape objShape;objShapre = objSquare();objShape.Area();objShapre = objRectangle();objShape.Area();objShapre = objRectangle();objShape.Area();Kế thừa và đa hìnhKết luận:Đa hình là khả năng một biến tham chiếu thay hành vi tùy theo đối tượng mà nó đang tham chiếu đến.Cho phép nhiều đối tượng của các subclass được coi như là các đối tượng của super class và tự động lựa chọn đúng phương thức dựa trên đối tượng mà phương thức đó được triệu gọiƯu điểm:Dễ mở rộngĐơn giản hóa code(dễ viết và dễ hiểu)Kế thừa và đa hìnhĐa hình thể hiện ở 3 dạng:Method overridingPhương thức của subclass nghi đè phương thức của lớp cơ sởViết chồng (Method overriding) phương thức trừu tượng:Phương thức của subclass cài đặt phương thức trừu tượng của lớp trừu tượngViết chồng (Method overriding) các phương thức của interfaceCác phương thức của một lớp cài đặt các phương thức trong một interfaceVí dụ DEMO tính đa hìnhKế thừa và đa hìnhTổng kếtKhái niệm kế thừa và cách cài đặtTừ khóa protectedTừ khóa baseTừ khóa newTừ khóa sealedMethod overridingĐa hìnhKế thừa và đa hình