Ngày 1: Các tính chất của Lập trình Hướng Đối Tượng (OOP) trong Java
Như chúng ta đã biết OOP là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong mã, giúp hiểu cấu trúc và hoạt động của một chương trình một cách rõ ràng hơn. Trong Java, OOP gồm 4 tính chất chính: Đóng gói (Encapsulation), Kế thừa (Inheritance), Đa hình (Polymorphism), và Trừu tượng (Abstraction).
VD: Lấy ví dụ về việc Đóng gói. Trong Java, chúng ta có thể khai báo biến là private và để truy cập đến nó chúng ta dùng các phương thức getter và setter. Việc này giúp bảo vệ dữ liệu và đảm bảo tính toàn vẹn của đối tượng.
Trường hợp đặc biệt: Khi override phương thức, chúng ta phải cẩn thận với việc truy cập kiểu dữ liệu của đối tượng. Nếu như một phương thức thuộc superclass là protected, khi override nó trong subclass, chúng ta không được quyền giảm quyền truy cập của nó (như đổi thành private).
5 Câu hỏi ôn phỏng vấn:
1. Định nghĩa OOP và tại sao nó lại quan trọng trong Java?
2. Giải thích và đưa ra ví dụ về các tính chất của OOP.
3. Lợi ích và hạn chế của việc sử dụng OOP thay vì lập trình hàm (functional programming)?
4. Từ khóa “super” và “this” trong Java sử dụng như thế nào?
5. Khi nào nên sử dụng interface, khi nào nên dùng abstract class trong Java?
Câu trả lời để ôn tập:
1. OOP là một kỹ thuật lập trình cho phép chúng ta tạo ra các đối tượng trong mã. OOP quan trọng trong Java nhờ việc nó tạo ra cấu trúc dễ hiểu, tái sử dụng được và dễ duy trì cho mã.
2. 4 tính chất chính của OOP là Đóng gói, Kế thừa, Đa hình và Trừu tượng. VD, Đóng gói giúp đảm bảo dữ liệu an toàn bằng cách hạn chế truy cập trực tiếp vào biến.
3. OOP làm mã dễ đọc hơn, tái sử dụng tốt hơn và dễ duy trì hơn. Tuy nhiên, nó cũng dễ gây hiểu lầm và gây lỗi hơn so với lập trình hàm.
4. “super” dùng để truy cập vào các thành phần của superclass từ subclass. “this” dùng để truy cập vào thành phần hiện tại của lớp.
5. Dùng interface khi các class cần chia sẻ cấu trúc phương thức nhưng không cần chia sẻ code. Dùng abstract class khi các subclass có code chung để kế thừa.