OLHub

OOP cơ bản — class, object, encapsulation

Class là gì, object lên heap ra sao, constructor + this, field vs local, encapsulation với access modifier, toString/equals/hashCode, và record để giảm boilerplate.

7 bài · ~133 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    Class và Object — bản thiết kế vs sản phẩm đúc ra

    Phân biệt class (bản thiết kế) và object (instance), từ khóa new, object sống trên heap và reference trên stack, `==` vs `.equals()` lần nữa nhìn từ góc OOP.

    ~18 phút
  2. 02

    Constructor và `this` — khởi tạo object đúng cách

    Constructor là gì, default constructor, overload constructor, this() chaining, this. để phân biệt field với parameter, và vì sao không return được trong constructor.

    ~16 phút
  3. 03

    Field, local, static — ba loại biến, ba lifecycle

    Phân biệt instance field, static field, local variable; thứ tự khởi tạo field; static initializer block; và vì sao static field thường là nguồn rò rỉ memory trong Java server-side.

    ~17 phút
  4. 04

    Encapsulation — `private`, `public`, `protected` và lý do field nên `private`

    Bốn access modifier của Java, nguyên tắc 'private by default, expose qua method', lợi ích cho maintenance + invariant, và ý nghĩa mới với record và JPMS.

    ~17 phút
  5. 05

    `toString`, `equals`, `hashCode` — ba method phải override đúng

    Override Object.toString để debug dễ, equals/hashCode đúng contract Java, Objects.equals & Objects.hash, và vì sao HashMap hỏng khi bạn override equals mà quên hashCode.

    ~20 phút
  6. 06

    Record — data class với 1 dòng

    Record từ Java 16: cú pháp, canonical constructor, compact constructor, implicit accessor, khi nào nên dùng record thay class truyền thống, và giới hạn (immutable, không kế thừa).

    ~15 phút
  7. 07

    Mini-challenge: Model hoá thư viện với record + class

    Bài thực hành khép lại Module 5 — xây Library quản lý Book và Borrower. Áp dụng record cho value object, class cho mutable state, encapsulation, validation, equals/hashCode.

    ~30 phút