You are on page 1of 77

Bài 6

Kế thừa
Số tiết: 3

30/08/2021 Lập trình hướng đối tượng 1


Nội dung bài học
1. Khái niệm kế thừa
2. Biểu diễn quan hệ kế thừa trong biểu đồ lớp
3. Nguyên lý kế thừa
4. Khởi tạo và hủy bỏ đối tượng lớp con

30/08/2021 Lập trình hướng đối tượng 2


Khái niệm kế thừa
Inheritance

30/08/2021 Lập trình hướng đối tượng 3


Kế thừa

30/08/2021 Lập trình hướng đối tượng 4


Bản chất của kế thừa

30/08/2021 Lập trình hướng đối tượng 5


Bản chất kế thừa

30/08/2021 Lập trình hướng đối tượng 6


Ví dụ

30/08/2021 Lập trình hướng đối tượng 7


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 8


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 9


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 10


Cú pháp kế thừa trong Java

30/08/2021 Lập trình hướng đối tượng 11


Cú pháp kế thừa trong C/C++

30/08/2021 Lập trình hướng đối tượng 12


Bản chất kế thừa

30/08/2021 Lập trình hướng đối tượng 13


Kế thừa và kết tập

30/08/2021 Lập trình hướng đối tượng 14


Biểu diễn quan hệ kế thừa trong
biểu đồ lớp

30/08/2021 Lập trình hướng đối tượng 15


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 16


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 17


Cây phân cấp kế thừa

30/08/2021 Lập trình hướng đối tượng 18


Lớp Object

30/08/2021 Lập trình hướng đối tượng 19


Lớp Object

30/08/2021 Lập trình hướng đối tượng 20


Nguyên lý kế thừa
Lớp con kế thừa được những gì từ lớp cha?

30/08/2021 Lập trình hướng đối tượng 21


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 22


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 23


Nguyên lý kế thừa

30/08/2021 Lập trình hướng đối tượng 24


Ví dụ

30/08/2021 Lập trình hướng đối tượng 25


Ví dụ 2

30/08/2021 Lập trình hướng đối tượng 26


Ví dụ 2 (tt)

30/08/2021 Lập trình hướng đối tượng 27


Ví dụ 3

30/08/2021 Lập trình hướng đối tượng 28


Ví dụ 3

30/08/2021 Lập trình hướng đối tượng 29


Khởi tạo và hủy bỏ đối tượng
Thứ tự khởi tạo, gọi phương thức của lớp cha

30/08/2021 Lập trình hướng đối tượng 30


Khởi tạo và hủy bỏ đối tượng

30/08/2021 Lập trình hướng đối tượng 31


Gọi phương thức của lớp cha

30/08/2021 Lập trình hướng đối tượng 32


Ví dụ

30/08/2021 Lập trình hướng đối tượng 33


Ví dụ

30/08/2021 Lập trình hướng đối tượng 34


Ví dụ

30/08/2021 Lập trình hướng đối tượng 35


Ví dụ

30/08/2021 Lập trình hướng đối tượng 36


Các kỹ thuật kế thừa

30/08/2021 Lập trình hướng đối tượng 37


Nội dung học
1. Ghi đè
2. Lớp trừu tượng
3. Giao diện

30/08/2021 Lập trình hướng đối tượng 38


Ghi đè
Override

30/08/2021 Lập trình hướng đối tượng 39


Mối quan hệ kế thừa

30/08/2021 Lập trình hướng đối tượng 40


Định nghĩa lại hay ghi đè

30/08/2021 Lập trình hướng đối tượng 41


Định nghĩa lại hay ghi đè

30/08/2021 Lập trình hướng đối tượng 42


Ví dụ
class Shape {
protected String name;
Shape(String n) { name = n; }
public String getName() { return name; }
public float calculateArea() { return 0.0f; }
}
class Circle extends Shape {
private int radius;
Circle(String n, int r){
super(n);
radius = r;
}
public float calculateArea() {
float area = (float)(3.14 * radius * radius);
return area;
}
}

30/08/2021 Lập trình hướng đối tượng 43


Lớp Square

30/08/2021 Lập trình hướng đối tượng 44


Viết lớp Triangle
• Sinh viên thực hiện theo nhóm

30/08/2021 Lập trình hướng đối tượng 45


Sử dụng từ khóa super

30/08/2021 Lập trình hướng đối tượng 46


Ví dụ

30/08/2021 Lập trình hướng đối tượng 47


Quy định trong ghi đè

30/08/2021 Lập trình hướng đối tượng 48


Ví dụ

30/08/2021 Lập trình hướng đối tượng 49


Quy định trong ghi đè (tiếp)

30/08/2021 Lập trình hướng đối tượng 50


Hạn chế ghi đè

30/08/2021 Lập trình hướng đối tượng 51


Lớp trừu tượng
Abstract Class

30/08/2021 Lập trình hướng đối tượng 52


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 53


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 54


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 55


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 56


Lớp trừu tượng

30/08/2021 Lập trình hướng đối tượng 57


Ví dụ

30/08/2021 Lập trình hướng đối tượng 58


Ví dụ 2

30/08/2021 Lập trình hướng đối tượng 59


Ví dụ 2 (tt)

30/08/2021 Lập trình hướng đối tượng 60


Giao diện
Interface

30/08/2021 Lập trình hướng đối tượng 61


Đa kế thừa và đơn kế thừa

30/08/2021 Lập trình hướng đối tượng 62


Vấn đề gặp phải trong đa kế thừa

30/08/2021 Lập trình hướng đối tượng 63


Giao diện

30/08/2021 Lập trình hướng đối tượng 64


Giao diện

30/08/2021 Lập trình hướng đối tượng 65


Giao diện

30/08/2021 Lập trình hướng đối tượng 66


Interface

30/08/2021 Lập trình hướng đối tượng 67


Góc nhìn quan niệm

30/08/2021 Lập trình hướng đối tượng 68


30/08/2021 Lập trình hướng đối tượng 69
Giao diện

30/08/2021 Lập trình hướng đối tượng 70


Ví dụ

30/08/2021 Lập trình hướng đối tượng 71


Ví dụ

30/08/2021 Lập trình hướng đối tượng 72


class Circle extends Shape implements Actable {
private int radius;
public Circle(String n, int x, int y, int r) {
super(n, x, y); radius = r;
}
public float calculateArea() {
float area = (float) (3.14 * radius * radius);
return area;
}
public void draw(Graphics g) {
System out println("Draw circle at ("
+ x + “," + y + ")");
g.drawOval(x-radius,y-radius,2*radius,2*radius);
}
public void moveTo(Graphics g, int x1, int y1) {
erase(g); x = x1; y = y1; draw(g);
}
public void erase(Graphics g) {
System out println(“Erase circle at ("
+ x + “," + y + ")");
// paint the region with background color...
}
}
30/08/2021 Lập trình hướng đối tượng 73
Lớp và giao diện

30/08/2021 Lập trình hướng đối tượng 74


Nhược điểm

30/08/2021 Lập trình hướng đối tượng 75


Tổng kết

30/08/2021 Lập trình hướng đối tượng 76


Hỏi & Đáp

30/08/2021 Lập trình hướng đối tượng 77

You might also like