Có 3 kiểu reference: interface, enum, class
Tất cả các thành phần của interface mặc định là public, không thể là access modifier khác. Field của interface là static final. Từ Java 8 có thêm default method, static method (method có body).
Từ Java 9 có thêm private method (static hay non-static đều có thể là private)
Method trong interface phải có body nếu là private, default, static
Một interface mà chỉ định nghĩa 1 abstract method, thì được gọi là functional interface.
Một interface chỉ có thể là public hoặc package-private.
Một interface có thể extend 1 hoặc nhiều interface khác (không impement interface hoặc extend class).
Nếu một class mà implement 2 interface có cùng default method giống tên thì phải overwride lại method đó, nếu không sẽ có lỗi compile.
Xảy ra lỗi khi một class vừa implement 1 interface vừa extend 1 class mà có cùng tên method, nhưng khác return type (overload method). Không có cách nào khác ngoài việc xoá implement hoặc xoá extend. Đối với field có cùng tên từ interface và class, phải chỉ định field từ interface hoặc class khi access đến field.