Điểm khác biệt cốt lõi cửa 2 thằng này đến từ tư tưởng sử dụng, ko phải đến từ việc thằng này có abc, thằng kia có xyz.
Nếu nhìn vào điểm khác nhau bạn có thể sẽ nghĩ là “2 thứ nó khác nhau rõ ràng như thế này, sao người ta lại đặt ra câu hỏi là phân biệt 2 thứ này nhỉ?”. Tuy nhiên trên thực tế, nhất là trong Java, về mặt functional thì Interface và Abstract class ko khác nhau nhiều. Sau khi bản update ở Java 8, thì Interface và Abstract class lại càng giống nhau hơn.
Nếu bạn so sánh 2 thằng này mà sa đà vào việc đếm thành phần như Interface thì tất cả method ko có nội dung hay Abstract thì có state thì bạn sẽ rơi vào vòng luẩn quẩn, học như thế rất mệt mỏi và sẽ rất rối.