Ý của anh ấy là bạn nên cung cấp một giao diện, và một lớp trừu tượng thực hiện phần của giao diện này:
public interface Foo {
void bar();
void baz();
}
private abstract class AbstractFoo implements Foo {
...
}
lớp AbstractFoo
có thể thậm chí không được trừu tượng nếu nó có thể cung cấp một cơ bản, thực hiện đầy đủ. Nhưng nếu bạn cần một lớp là một Foo, nhưng không thể mở rộng AbstractFoo, nó vẫn có thể với một giao diện. Một lớp trừu tượng không cung cấp khả năng này, vì bạn chỉ có thể mở rộng một lớp.
BTW, đây là những gì được thực hiện trong khuôn khổ bộ sưu tập (mà Josh Bloch tạo): giao diện Set
được thực hiện bởi AbstractSet
, giao diện List
được thực hiện bởi AbstractList
vv
Nguồn
2012-06-24 22:00:52
Đối với giao diện _every_? Bạn có thể đưa ra một tham chiếu trang của tuyên bố này không? – Puce