JavaScript is required
Danh sách đề

Câu hỏi trắc nghiệm Lập trình hướng đối tượng có lời giải chi tiết

4 câu hỏi 60 phút

Thẻ ghi nhớ
Luyện tập
Thi thử
Nhấn để lật thẻ
1 / 4

Hãy chọn câu trả lời đúng:

A.
Ngôn ngữ lập trình C, C++, C# là ngôn ngữ lập trình cấu trúc
B.
Ngôn ngữ lập trình C#, C++ là ngôn ngữ lập trình hướng đối tượng
C.
Ngôn ngữ lập trình pascal, C là ngôn ngữ lập trình cấu trúc
D.
Ngôn ngữ lập trình C++, Java là ngôn ngữ lập trình cấu trúc
Đáp án
Câu hỏi kiểm tra kiến thức về phân loại ngôn ngữ lập trình: cấu trúc và hướng đối tượng. * **Phương án A:** Sai. C# là ngôn ngữ lập trình hướng đối tượng, không phải cấu trúc. * **Phương án B:** Đúng. Cả C# và C++ đều là ngôn ngữ lập trình hướng đối tượng. * **Phương án C:** Đúng. Pascal và C là các ngôn ngữ lập trình cấu trúc điển hình. * **Phương án D:** Sai. Java là ngôn ngữ lập trình hướng đối tượng, không phải cấu trúc. Như vậy, phương án B và C đều đúng. Tuy nhiên, đề bài yêu cầu chọn "câu trả lời đúng", tức là chỉ một đáp án. Trong trường hợp này, phương án C chính xác hơn và đầy đủ hơn vì nó liệt kê hai ngôn ngữ lập trình cấu trúc phổ biến (Pascal và C), trong khi phương án B chỉ liệt kê các ngôn ngữ lập trình hướng đối tượng. Vì cả B và C đều đúng, nhưng C đầy đủ hơn, tôi chọn C là đáp án đúng nhất.

Danh sách câu hỏi:

Câu 1:

Hãy chọn câu trả lời đúng:

Lời giải:
Đáp án đúng: C
Câu hỏi kiểm tra kiến thức về phân loại ngôn ngữ lập trình: cấu trúc và hướng đối tượng. * **Phương án A:** Sai. C# là ngôn ngữ lập trình hướng đối tượng, không phải cấu trúc. * **Phương án B:** Đúng. Cả C# và C++ đều là ngôn ngữ lập trình hướng đối tượng. * **Phương án C:** Đúng. Pascal và C là các ngôn ngữ lập trình cấu trúc điển hình. * **Phương án D:** Sai. Java là ngôn ngữ lập trình hướng đối tượng, không phải cấu trúc. Như vậy, phương án B và C đều đúng. Tuy nhiên, đề bài yêu cầu chọn "câu trả lời đúng", tức là chỉ một đáp án. Trong trường hợp này, phương án C chính xác hơn và đầy đủ hơn vì nó liệt kê hai ngôn ngữ lập trình cấu trúc phổ biến (Pascal và C), trong khi phương án B chỉ liệt kê các ngôn ngữ lập trình hướng đối tượng. Vì cả B và C đều đúng, nhưng C đầy đủ hơn, tôi chọn C là đáp án đúng nhất.

Câu 2:

Trong lớp kế thừA. Lớp mới có thuật ngữ tiếng Anh là:

Lời giải:
Đáp án đúng: C
Trong lập trình hướng đối tượng, lớp kế thừa (lớp con) được gọi là "Derived Class" trong tiếng Anh. Lớp gốc (lớp cha) được gọi là "Base Class".

Câu 3:

Thành phần protected của lớp là thành phần:

Lời giải:
Đáp án đúng: B
Trong lập trình hướng đối tượng, thành phần `protected` của một lớp có ý nghĩa quan trọng trong việc kiểm soát quyền truy cập. Cụ thể: * **Truy cập từ bên ngoài lớp:** Các thành phần `protected` không thể truy cập trực tiếp từ bên ngoài lớp. Điều này giúp bảo vệ dữ liệu và trạng thái bên trong của lớp khỏi bị thay đổi hoặc truy cập trái phép từ các đối tượng bên ngoài. * **Truy cập từ lớp kế thừa:** Các lớp con (lớp kế thừa) có quyền truy cập vào các thành phần `protected` của lớp cha. Điều này cho phép các lớp con mở rộng hoặc sửa đổi hành vi của lớp cha một cách an toàn, đồng thời vẫn duy trì tính đóng gói của dữ liệu. Vì vậy, đáp án chính xác là B: "Không cho phép truy xuất từ bên ngoài của lớp nhưng cho phép lớp kế thừa truy xuất tới."

Câu 4:

Phát biểu nào dưới đây là không đúng về hàm khởi tạo trong kế thừa:

Lời giải:
Đáp án đúng: C

Trong kế thừa, khi một đối tượng của lớp dẫn xuất được tạo, hàm khởi tạo của lớp cơ sở sẽ được gọi trước, sau đó đến hàm khởi tạo của lớp dẫn xuất (phương án A đúng). Khi định nghĩa hàm khởi tạo bên ngoài lớp, ta sử dụng toán tử phạm vi "::" để chỉ rõ hàm khởi tạo thuộc lớp nào (phương án B đúng). Khi lớp dẫn xuất gọi hàm khởi tạo của lớp cơ sở trong danh sách khởi tạo thành viên, ta sử dụng một dấu hai chấm ":" (phương án C đúng). Nếu không chỉ rõ hàm khởi tạo của lớp cơ sở trong danh sách khởi tạo thành viên, trình biên dịch sẽ cố gắng gọi hàm khởi tạo mặc định (không tham số) của lớp cơ sở. Nếu lớp cơ sở không có hàm khởi tạo mặc định và không có hàm khởi tạo nào được gọi rõ ràng trong lớp dẫn xuất, thì sẽ gây ra lỗi biên dịch (phương án D sai, vì nói rằng chương trình sẽ tự động gọi hàm khởi tạo ngầm định hoặc hàm khởi tạo không có tham số của lớp dẫn xuất, trong khi phải là của lớp cơ sở).