Abstract class không thể được instantiate trực tiếp, dùng làm template với abstract methods (không có implementation) và concrete methods.
- Subclass bắt buộc phải override abstract methods.
- Đặc điểm: có constructor (để khởi tạo), có state (instance variable), kiểm soát access modifier tốt hơn.
- Nên dùng khi: các class chia sẻ code/state chung, cần protected/private member, hoặc muốn non-static/non-final methods.