intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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ơ)

Chia sẻ: Thanh Hoa | Ngày: | Loại File: PDF | Số trang:68

74
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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ơ)

  1. Chapter 3 Thừa kế và đa hình CT176 – LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  2. 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
  3. 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
  4. Thừa kế là gì? CT176 – Lập trình Hướng đối tượng 4
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. Thừa kế trong Java CT176 – Lập trình Hướng đối tượng 10
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2