JavaScript is required

Hãy giải thích và cho ví dụ minh họa các khái niệm tính kế thừa (Inheritance), tính đa hình (Polymorphism) của lập trình hướng đối tượng.

Trả lời:

Đáp án đúng:


**Tính kế thừa (Inheritance):** Tính kế thừa là một cơ chế cho phép một lớp (lớp con/lớp dẫn xuất) kế thừa các thuộc tính và phương thức từ một lớp khác (lớp cha/lớp cơ sở). Lớp con sẽ tự động có tất cả các đặc điểm của lớp cha và có thể mở rộng hoặc sửa đổi chúng. Điều này giúp tránh việc lặp lại code, tăng tính tái sử dụng và tổ chức code một cách có hệ thống. * **Ví dụ:** Giả sử ta có lớp `Vehicle` (Phương tiện) với các thuộc tính chung như `brand` (Nhãn hiệu), `model` (Mẫu xe) và phương thức `startEngine()` (Khởi động động cơ). Ta có thể tạo các lớp con như `Car` (Ô tô), `Motorcycle` (Xe máy) kế thừa từ lớp `Vehicle`. Các lớp `Car` và `Motorcycle` sẽ tự động có các thuộc tính `brand`, `model` và phương thức `startEngine()`. Ngoài ra, chúng có thể có thêm các thuộc tính và phương thức riêng, ví dụ `Car` có thêm thuộc tính `numberOfDoors` (Số cửa) và `Motorcycle` có thêm thuộc tính `hasSidecar` (Có thùng xe). **Tính đa hình (Polymorphism):** Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau phản ứng khác nhau đối với cùng một phương thức gọi. Có hai dạng đa hình chính: * **Đa hình thời gian biên dịch (Compile-time polymorphism) / Nạp chồng (Overloading):** Cho phép định nghĩa nhiều phương thức cùng tên nhưng khác nhau về tham số (số lượng, kiểu dữ liệu). Khi gọi phương thức, trình biên dịch sẽ chọn phương thức phù hợp dựa trên tham số truyền vào. * **Đa hình thời gian chạy (Runtime polymorphism) / Ghi đè (Overriding):** Cho phép lớp con định nghĩa lại một phương thức đã có ở lớp cha. Khi gọi phương thức này trên một đối tượng thuộc lớp con, phương thức được định nghĩa trong lớp con sẽ được thực thi. * **Ví dụ:** Tiếp tục với ví dụ trên, lớp `Vehicle` có phương thức `accelerate()` (Tăng tốc). Các lớp `Car` và `Motorcycle` có thể ghi đè phương thức `accelerate()` để thể hiện cách tăng tốc khác nhau. Khi gọi `accelerate()` trên một đối tượng `Car`, nó sẽ tăng tốc theo cách của ô tô, còn khi gọi trên một đối tượng `Motorcycle`, nó sẽ tăng tốc theo cách của xe máy. Một ví dụ khác về nạp chồng, trong lớp `Calculator` ta có thể định nghĩa nhiều phương thức `add()` với các tham số khác nhau (ví dụ `add(int a, int b)`, `add(double a, double b)`, `add(int a, int b, int c)`), trình biên dịch sẽ chọn phương thức `add()` phù hợp dựa trên kiểu và số lượng tham số được truyền vào khi gọi hàm.

Đề thi cuối kỳ môn Lập Trình Hướng Đối Tượng của Đại học Quốc gia TP.HCM, Trường ĐH Công nghệ Thông tin, Khoa Công nghệ Phần mềm. Đề thi gồm các câu hỏi về giải thích các khái niệm OOP (trừu tượng, bao bọc, kế thừa, đa hình), thiết kế lớp biểu diễn đơn thức và xây dựng hệ thống quản lý thư viện trường học với các loại sách khác nhau.


4 câu hỏi 90 phút

Câu hỏi liên quan