Bài giảng Lập trình hướng đối tượng - Chương 3: Thừa kế và đa hình (ĐH Cần Thơ)
lượt xem 6
download
Bài giảng "Lập trình hướng đối tượng - Chương 3: Thừa kế và đa hình" cung cấp cho người học các kiến thức: Thừa kế, lớp trừu tượng và phương thức trừu tượng, đa thừa kế (multiple inheritance), giao diện, đa hình. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng - Chương 3: Thừa kế và đa hình (ĐH Cần Thơ)
- Chapter 3 Thừa kế và đa hình CT176 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- Mục tiêu Chương này nhằm giới thiệu tính thừa kế và tính đa hình trong Java CT176 – Lập trình Hướng đối tượng 2
- Nội dung • Thừa kế § Thừa kế là gì? § Thừa kế trong Java § Hàm xây dựng trong thừa kế • Đa hình § Nạp đè phương thức § Đa hình § Ứng dụng của tính đa hình • Lớp trừu tượng & Phương thức trừu tượng • Đa thừa kế (multiple inheritance) • Giao diện (interface) CT176 – Lập trình Hướng đối tượng 3
- Thừa kế là gì? CT176 – Lập trình Hướng đối tượng 4
- v Thừa kế là gì? Khái quát hóa và chuyên biệt hóa • Một đối tượng trong thực tế thường là một phiên bản chuyên biệt của một đối tượng khác khái quát hơn • Khái niệm “côn trùng” mô tả một loài sinh vật rất chung chung với nhiều đặc tính (không xương sống, 3 cặp chân,...) • Châu chấu và ong vò vẽ là côn trùng: § Chia sẻ chung các đặc điểm của côn trùng § Có một số đặc điểm riêng: o Châu chấu có khả năng nhảy o Ong vò vẽ có kim và khả năng chích ⇒ Châu chấu và ong vò vẻ là hai “phiên bản” đặc biệt của côn trùng CT176 – Lập trình Hướng đối tượng 5
- v Thừa kế là gì? Thừa kế và quan hệ là (is-a) • Thừa kế được sử dụng để mô hình hóa mối quan hệ là: (hay thực hiện sự chuyên biệt hóa): § Lớp thừa kế: lớp con (subclass) Thừa kế đơn § Lớp được thừa kế: lớp cha (superclass) • Quan hệ giữa lớp cha và lớp con: “là” § Một con châu chấu “là” một côn trùng Đa thừa kế § Một con ong vò vẽ “là” một côn trùng • Một lớp con là sự chuyên biệt hóa của lớp cha: § Mang tất cả các đặc điểm của lớp cha § Thêm một số đặc điểm đặc trưng riêng • Thừa kế dùng để mở rộng khả năng của một lớp CT176 – Lập trình Hướng đối tượng 6
- v Thừa kế là gì? Thừa kế và quan hệ là (is-a) - Không xương sống - Xương ngoài Côn trùng - 1 cặp râu Chứa các thuộc tính và - 2 mắt đơn, 1 cặp mắt kép phương thức chung của các loại côn trùng - Hung hãn - Hiền - Có độc - Chân dài - Có thể bay Ong vò vẻ Châu chấu - Ăn lá - Có thể nhảy Chứa các thuộc tính và phương Chứa các thuộc tính và phương thức chung của ong vò vẻ thức chung của châu chấu CT176 – Lập trình Hướng đối tượng 7
- v Thừa kế là gì? Thừa kế và quan hệ là (is-a) - Không xương sống Côn trùng - Xương ngoài Chứa các thuộc tính và - 1 cặp râu phương thức chung của - 2 mắt đơn, 1 cặp mắt kép các loại côn trùng - Hung hãn Ong vò vẻ Châu chấu - Hiền - Có độc - Chân dài - Có thể bay - Ăn lá - Có thể nhảy Chứa các thuộc tính và phương Chứa các thuộc tính và phương thức của ong vò vẻ thức của châu chấu CT176 – Lập trình Hướng đối tượng 8
- v Thừa kế là gì? Thừa kế và quan hệ là (is-a) • Một điểm màu là một điểm có thêm màu sắc - Tung độ, hoành độ Điểm 2D - Nhập tọa độ Chứa các thuộc tính và - Hiển thị tọa độ phương thức chung của - Thay đổi tọa độ … các điểm trong không gian 2D - Màu - Thay đổi màu Điểm màu 2D - Hiển thị màu - Nhập màu sắc Chứa các thuộc tính và phương thức của điểm trong không gian 2D với màu sắc CT176 – Lập trình Hướng đối tượng 9
- Thừa kế trong Java CT176 – Lập trình Hướng đối tượng 10
- v Thừa kế trong Java Tạo lớp thừa kế • Khai báo: modifier class extends { //subclass members } • Ví dụ: Tạo lớp Student thừa kế từ lớp Person public class Student extends Person { //Các thành phần của lớp Student } CT176 – Lập trình Hướng đối tượng 11
- v Thừa kế trong Java Qui tắc trong thừa kế 1. Lớp con thừa kế (có) tất cả các thành phần của lớp cha 2. Lớp con có thể truy xuất các thành phần public và protected của lớp cha 3. Lớp con có thể có thêm các thuộc tính, các phương thức mới 4. Lớp con có thể nạp đè (overriding) các phương thức của lớp cha CT176 – Lập trình Hướng đối tượng 12
- v Thừa kế trong Java Ví dụ Circle -radius: double +Circle() +Circle(radius: double) +getRadius(): double +getArea(): double +setRadius(radius: double): void Cylinder -height: double +getHeight(): double +getVolume(): double +setHeight(height: double): void +getArea(): double CT176 – Lập trình Hướng đối tượng 13
- v Thừa kế trong Java Ví dụ class Circle { public class Cylinder extends Circle private double radius; { private double height; public Circle() { radius = 0; public double getHeight() { } return height; public Circle(float r) { } radius = r; public void setHeight(double h) { } height = h; public double getRadius() { } return radius; public double getVolume() { } return getArea() * height; public double getArea() { } return Math.PI*radius*radius; } } public void setRadius(double r) { radius = r; } CT176 – Lập trình Hướng đối tượng 14
- v Thừa kế trong Java Ví dụ class Circle { public static void main(String []args) { cy: Cylinder Cylinder cy = new Cylinder(); -radius: double cy.setRadius(10.0); -height: double cy.setHeight(5.0); +getRadius(): double System.out.println("Cylinder radius: " + +getArea(): double cy.getRadius()); +setRadius(double): void System.out.println("Cylinder height: " + +getHeight(): double cy.getHeight()); +getVolume(): double System.out.printf("Cylinder volume: %.2f", +setHeight(double): void cy.getVolume()); } } CT176 – Lập trình Hướng đối tượng 15
- v Thừa kế trong Java Bài tập Point -x: int -y: int +Point() +Point(x: int, y: int) +getX(): int +setX(x: int): void +getY(): int +setY(y: int): void +distance(Point d): double Point3D -z: int +getZ(): int +setZ(z: int): void +distance(Point3D): double CT176 – Lập trình Hướng đối tượng 16
- v Thừa kế trong Java Hàm xây dựng trong thừa kế • Khi đối tượng thuộc lớp con được tạo ra: § Hàm xây dựng tượng ứng của lớp con sẽ được gọi § Nếu hàm XD của lớp con không gọi đến hàm XD của lớp cha, hàm XD mặc nhiên của lớp cha sẽ tự động được gọi trước khi hàm XD lớp con được thực hiện cy: Cylinder Cylinder cy = new Cylinder(); -radius: 0 -height: … Circle() { radius=0; } • Nếu muốn gọi hàm xây dựng của Cylinder() {} lớp cha, ta sử dụng từ khóa super: super([các tham số cho hàm XD của lớp cha]); CT176 – Lập trình Hướng đối tượng 17
- v Thừa kế trong Java Hàm xây dựng trong thừa kế public class Cylinder extends Circle { cy: Cylinder //các dữ liệu thành viên... -radius: 5 public Cylinder() { -height: 2 super(); height = 0; Cylinder(5, 2) { } super(5); height = 2; public Cylinder(int r, int h) { } super(r); height = h; Cycle(double r) { } radius = r; //các hàm thành viên khác... } } public static void main(String []args) { Cylinder cy = new Cylinder(5, 2); Hàm xây dựng của lớp cha //... phải được gọi đầu tiên } CT176 – Lập trình Hướng đối tượng 18
- v Thừa kế trong Java Từ khóa super • Là một tham chiếu đến lớp cha hay các lớp tổ tiên (ancestor) của một lớp • Cho phép các phương thức của lớp con truy xuất đến các thành phần lớp cha: § super([đối số]): truy xuất đến hàm xây dựng lớp cha § super.: truy xuất đến thành viên lớp cha class Cylinder { public double getArea() { return (2*Math.PI*radius*height) + (2*super.getArea()); } gọi hàm getArea() của lớp Circle //... } CT176 – Lập trình Hướng đối tượng 19
- v Thừa kế trong Java Bài tập Point -x: int -y: int +Point() +Point(x: int, y: int) +getX(): int +setX(x: int): void +getY(): int +setY(y: int): void Point3D -z: int +Point3D() +Point3D(x: int, y: int, z: int) +getZ(): int +setZ(z: int): void CT176 – Lập trình Hướng đối tượng 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 119 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn