Abstract class có thể có constructor, state (instance variable), và cả method abstract lẫn concrete.
- Interface chỉ định nghĩa contract — từ Java 8 trở đi interface có thêm default method và static method.
- Một class chỉ extends một abstract class nhưng có thể implements nhiều interface.
- Dùng abstract class khi các class con chia sẻ code và state chung; dùng interface khi định nghĩa hành vi cho các class không liên quan.