l Interface
1. class YourClass{ }
2. interface YourInterface
3. {
4. void a();
5. //static final void b();
6. public static final int var = 1;
7. }
8. public class MyInterfaceClass extends YourClass implements YourInterface
9. {
10. interface Interface1{ }
11. public void a(){}
12. public abstract interface MyInterface extends Interface1
13. {
14. public void f();
15. //MyInterface(){}
16. }
17. public static void main(String args[])
18. {
19. //new MyInterface();
20. }
21. }
可以
l Line 12:interface可以繼承多個super-interface。
l Line 2、10、12:interface可使用的modifiers只有public及abstract。
l Line 6:可以在interface內宣告fields,但這些fields必須是"public static final"(常數constant)。"public static final"可以省略,但不可以是blank final,即一定得設定初始值,因此interface內不可能會定義任何的instance variable。
不可以
l Line 4、5:不可以在interface內宣告protected、private、static或final method,且interface內的method不可有method body({})。否則會compiler error。
l Line 15:interface內不可定義任何的constructor。
l Line 19:interface及abstract class不可被被實體化,因尚未定義完整(內含abstract method)。
注意
class
l Line 11:若一個class implements某個interface,這個class就必須實做(implement)這個interface內所定義的所有abstract methods(即長出method body{}來),否則這個class必須宣告為abstract class。
l Line 8:一個class只能extends一個superclass,但可以implements一個以上的interface,而且implements子句不可出現在extends子句之前。class會去implements interface主要目地是為了多型(polymorphism)。
method
l Line 4、5:在interface內的method不管是否有加public abstract,一定都是public abstract method。
来自:【 Garfield 的 SCJP 閱讀筆記 】