OLHub

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.

8 bài · ~155 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á. 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.

    ~25 phút
  2. 02

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

    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
  4. 04

    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
  5. 05

    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
  6. 06

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

    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
  8. 08

    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.

    ~30 phút