Interface định nghĩa property, method, event (các thành viên). Interface chỉ chứa khai báo, lớp triển khai chịu trách nhiệm định nghĩa chi tiết.
Abstract class cũng phục vụ mục đích tương tự, nhưng thường dùng khi chỉ một vài phương thức được khai báo bởi lớp cơ sở, lớp dẫn xuất triển khai chức năng.
Khác biệt chính:
- Một class có thể implement nhiều interface, nhưng chỉ kế thừa một abstract class.
- Kế thừa đa dạng (multiple inheritance) không đạt được bằng abstract class, nhưng interface làm được.
- Interface không thể định nghĩa field, abstract class có thể.
- Interface không có access modifier (public, private...), mặc định mọi thứ đều public.