Kế thừa & Đa hình

extends, super, override, dynamic dispatch, abstract class vs interface, sealed class (Java 17+), và vì sao 'composition over inheritance' không phải khẩu hiệu rỗng.

9 bài · ~157 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    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á. Quy trình 5 bước xác định abstraction từ bài toán, 3 level of abstraction, và bộ công cụ Java (interface, abstract class, sealed, record) để hiện thực chúng.

    ~14 phút
  2. 02

    Nhận diện abstraction sai — over-engineering trap và cách sửa

    4 trap over-engineering kinh điển: interface 1 implementation, abstraction không use case, premature abstraction, abstraction giả tạo. Rule of 3, YAGNI, case study payment system minh hoạ abstraction đúng và Open/Closed Principle.

    ~13 phút
  3. 03

    `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.

    ~17 phút
  4. 04

    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.

    ~18 phút
  5. 05

    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.

    ~15 phút
  6. 06

    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.

    ~18 phút
  7. 07

    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.

    ~16 phút
  8. 08

    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.

    ~16 phút
  9. 09

    Mini-challenge: Sở thú — sealed + record + pattern matching

    Bài thực hành khép lại module Kế thừa & Đa hình — 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.

    ~30 phút