Bài 6
Kế thừa và Đa hình
Ôn tập lại bài cũ
• Lớp và đối tượng
• Constructor và Destructor
• Garbage Collector
• Con trỏ this
• Phươ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à out
Nội dung trình bày
• 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
Subject name / Session# / 3 of Totalpage
• Polymorphism(đa hình)
Kế thừa và đa hình
Khái niệm kế thừa
• Kế thừa là một đặc điểm quan trọng của ngôn ngữ lập trình hướng
đối tượng
• Kế 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ình
• Lớ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)
(cid:0) Đơn kế thừa. Ví dụ kế thừa lớp
(cid:0) Đa kế thừa. Ví dụ kế thừa Interface
• Có 2 loại kế thừa:
Kế thừa và đa hình
Cài đặt kế thừa
•
• Trong đó là classA kế thừa từ classB
• Trong 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
public
• Các construtor không được kế thừa
• Ví dụ DEMO kế thừa
Kế thừa và đa hình
Từ khóa proteced
• Để qui định phạm vi truy xuất các thành phần bên trong một lớp
• Một thành phần(thuộc tính, phương thức) được
Kế thừa và đa hình
Sealing class
• Mộ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ình
Từ khóa base
• Dù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 base
Kế thừa và đa hình
Từ khóa new
• Dù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 base
• Ví dụ minh họa từ khóa new
Kế thừa và đa hình
Method overriding
• Là 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.
(cid:0) Đặt từ khóa virtual trước phương thức trong lớp cơ sở
(cid:0) Đặt từ khóa override trước phương thức muốn override trong
• Để override (ghi đè) một phương thức ơ lớp cơ sở:
lớp dẫn xuất
Kế thừa và đa hình
Overriding method
• Cú pháp khai báo
[access modifier] virtual [return-type] name( [parameters-list] ) {
//virtual method implementation
}
[access modifier] override [return-type] name( [parameters-list] ) {
//virtual method implementation
}
• Ví dụ DEMO method overriding
Kế thừa và đa hình
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.
(cid:0) Ví dụ chúng ta có một lớp shape(hình vẽ), trong lớp shape có
• Trong lập trình hướng đối tượng: thế nào là đa hình?
phương thức Area(). Sau đó các lớp Square(hình vuông),
(cid:0) Trong lớp Square override phương thức Area() trong lớp shape
Rectangle(hình CN), Circle(đường tròn) kế thừa từ lớp Shape.
(cid:0) Trong lớp Rectangle cũng override phương thức Area() của lớp
và nó thực hiện công việc tính diện tích của hình vuông.
shape và nó thực hiện công việc tính diện tích của hình chữ
nhật
Kế thừa và đa hình
Lớ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
Rectangle objRectangle = new Rectangle();
Circle objCircle = new Circle();
Shape objShape;
objShapre = objSquare();
objShape.Area();
objShapre = objRectangle();
objShape.Area();
objShapre = objRectangle();
objShape.Area();
Square objSquare = new Square();
Kế thừa và đa hình
Kế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
(cid:0) Dễ mở rộng
(cid:0) Đơn giản hóa code(dễ viết và dễ hiểu)
• Ưu điểm:
Kế thừa và đa hình
(cid:0) Method overriding
Phương thức của subclass nghi đè phương thức của lớp
• Đa hình thể hiện ở 3 dạng:
(cid:0) 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ơ sở
(cid:0) Viết chồng (Method overriding) các phương thức của interface
Các phương thức của một lớp cài đặt các phương thức
của lớp trừu tượng
(cid:0) Ví dụ DEMO tính đa hình
trong một interface
Kế thừa và đa hình
Tổng kết
• Khái niệm kế thừa và cách cài đặt
• Từ khóa protected
• Từ khóa base
• Từ khóa new
• Từ khóa sealed
• Method overriding
• Đa hình

