Bạn không thể nhanh chóng một giao diện, ví dụ: bạn không thể làm
MyInterface foo = new MyInterface(); // Compile-time error.
Những gì bạn có thể làm là tạo một lớp mà thực hiện giao diện. Đó là, cho một lớp MyClass
public class MyClass implements MyInterface {
// ...
@Override
void method_one() {
// ...
}
@Override
int method_two() {
// ...
}
}
bạn có thể nhanh chóng nó và đặt một tham chiếu đến nó trong biến của bạn như thế này:
MyInterface foo = new MyClass();
Nếu bạn đã có một lớp thực hiện MyInterface
class MyClass2 implements MyInterface {
// ...
}
bạn cũng có thể thay thế tham chiếu đến thể hiện của lớp này theo biến của bạn:
MyInterface foo = new MyClass2();
Đây là nơi mà sức mạnh của giao diện nằm: họ xác định loại, không phải là một đặc biệt thực hiện và cho phép bạn tham khảo bất cứ thi hành một loại nhất định.
Nó là một thực hành lập trình rất tốt để làm cho các lớp thực hiện các giao diện và sử dụng chúng để chỉ các thể hiện của các lớp này.Thực hành này tạo điều kiện thuận lợi cho sự linh hoạt và tái sử dụng.
Do đó, bạn nên sử dụng đối số và kiểu biến giao diện bất cứ khi nào có thể hiểu rằng các triển khai khác nhau có thể được chuyển vào phương pháp bạn đang triển khai. Ví dụ: nếu bạn đang làm việc với một cá thể HashSet<T>
, bạn nên sử dụng một biến loại Set<T>
để tham chiếu đến nó (lớp HashSet<T>
triển khai giao diện Set<T>
).
Nguồn
2011-12-06 20:20:00
Cảm ơn bạn, cả bạn và Macmade đều cho tôi một lời giải thích rõ ràng. – Mellon