Một interface khai báo một hợp đồng — tập các method mà một kiểu phải cung cấp — với không (hoặc rất ít) phần cài đặt. Một abstract class là một class được cài đặt một phần, có thể giữ trạng thái chia sẻ và các method cụ thể nhưng không thể được khởi tạo (instantiate). Khác biệt then chốt: một class có thể implement nhiều interface nhưng chỉ kế thừa từ một class.
