Nội dung
Danh sách bài học
- 01~25 phút
Tư duy trừu tượng hoá — trụ cột quan trọng nhất của OOP
Abstraction là gì, 4 trụ cột OOP và vai trò trừu tượng hoá. Cách xác định abstraction từ bài toán, 3 level of abstraction, khi nào trừu tượng - khi nào không. Ứng dụng trong Java qua interface, abstract class, polymorphism.
- 02~17 phút
`extends` và `super` — kế thừa cơ bản
Cú pháp extends, constructor chain với super(...), mỗi class có đúng 1 cha, Object là gốc, và vì sao constructor cha luôn chạy trước.
- 03~18 phút
Override và dynamic dispatch — đa hình ở runtime
Override method vs overload, @Override annotation, dynamic dispatch dựa vào kiểu thực của object, covariant return type, và rule 'tightening' cấm thu hẹp visibility.
- 04~15 phút
Abstract class — template buộc subclass hoàn thiện
Khi nào dùng abstract class, abstract method, template method pattern, so sánh với interface, và vì sao abstract class giữ được state nhưng không thể instantiate.
- 05~18 phút
Interface — hợp đồng capability với default method
Interface là gì, đa kế thừa interface, default method Java 8+, private method Java 9+, functional interface, và so sánh chi tiết với abstract class.
- 06~16 phút
Sealed class — kiểm soát tập subtype với pattern matching exhaustive
Sealed class/interface Java 17+, từ khóa permits, sub-type phải là final/sealed/non-sealed, kết hợp record + sealed + switch pattern matching cho ADT đầy đủ trong Java.
- 07~16 phút
Composition over inheritance — khi nào KHÔNG kế thừa
Nguyên tắc Effective Java Item 18: ưu tiên composition hơn inheritance. Vấn đề của inheritance, cách composition sửa, pattern delegation, và khi nào thực sự cần extends.
- 08~30 phút
Mini-challenge: Sở thú — sealed + record + pattern matching
Bài thực hành khép lại Module 6 — mô hình sở thú với sealed interface Animal, record cho mỗi loài, switch pattern matching để tính khẩu phần ăn. Áp dụng ADT đầy đủ của Java 21.