Về mặt kỹ thuật, sự khác biệt không thực sự đáng kể nhưng về mặt khái niệm, chúng là những thứ hoàn toàn khác nhau và điều đó dẫn đến sự khác biệt về kỹ thuật mà những người khác đã đề cập.
Một siêu lớp trừu tượng chính xác là những gì nó nghe, nó là một loại phổ biến được chia sẻ bởi nhiều loại khác, như Mèo và Chó là Động vật.
Một giao diện cũng chính xác như những gì nó nghe, đó là một giao diện mà qua đó các lớp khác có thể giao tiếp với đối tượng. Nếu bạn muốn thực hiện Cat Walk, bạn vẫn ổn, vì Cat thực hiện giao diện CanWalk. Tương tự đối với một con Thằn lằn, mặc dù chúng đi rất khác nhau. Mặt khác, một con Rắn không thực hiện CanWalk, vì vậy bạn không thể bảo nó đi bộ. Trong khi đó, Lizard và Snake (hoặc có thể là các lớp con rõ ràng hơn - tôi không phải là chuyên gia) có thể vừa lột da, và do đó thực hiện CanShed, trong khi một con mèo không thể làm điều đó.
Nhưng tất cả chúng vẫn là Động vật và có một số thuộc tính chung, như chúng còn sống hay đã chết.
Đây là lý do tại sao tất cả các phương thức trên một giao diện phải được triển khai ở chế độ công khai (hoặc rõ ràng, trong C #). Nguyên nhân điểm trong giao diện bị ẩn khỏi lớp giao tiếp với đối tượng là gì? Đó cũng là lý do tại sao bạn có thể có nhiều giao diện cho một đối tượng, ngay cả khi một ngôn ngữ không hỗ trợ nhiều kế thừa.
Để trở lại câu hỏi của bạn, khi bạn nhìn nó theo cách này, rất hiếm khi có một lý do để có một siêu lớp hoàn toàn trừu tượng.