Java 自學筆記 03 - Interface & Abstract
OOP 除了有 Encapsulation、Inheritance 與 Polymorphism 三大要素外,Interface 與 Abstract 也是 OOP 中的重要概念。
Interface (介面)
因為 java 的 class 不能多重繼承,所以發展出 Interface:
宣告 interface
interface 裡的變數都是 piblic、static 以及 final 的
interface 裡的方法則是 public 以及 abstract 的1
2
3
4
5
6
7
8
9
10
11
12
13public interface Listener {
double PI = 3.14149; // 同public static final
void listen(); // 同public abstract
}
public interface Runnalbe {
int PERIOD = 10;
void run(); // 注意這裡只有 (),沒有 {}
}
public interface AnotherRun {
int PERIOD = 20;
void run();
int run(int);
}
Interface 的繼承
Interface 可以多重繼承1
2
3
4public interface ActionListener extends Listener {
}
public interface MultiInterface extends Listener, Runnalbe {
}
Class 實作 Interface
相同變數名稱: 用 interfaceA.var 以及 interfaceB.var 區分
相同函數名稱: 實作一次就好1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class A implements Listener {
public void listen() {
}
}
public class B implements Listener, Runnable {
public void listen() {
}
public void run() {
}
}
public class C implements MultiInterface {
public void listen() {
}
public void run() {
}
}
public class D extends A implements Runnable, AnotherRun {
public void run() {
}
public int run(int period) {
}
}
Abstarct (抽象)
只有參數宣告,沒有實作的方法,稱為abstract method。
- 具有 abstract method 的 class 必須宣告為 abstract class。
- 繼承 abstract class 的子類別必須 override 所有父類別的 abstract method,否則子類別也必須宣告為 abstract class。
- 實作 Interface A 的 Class 必須實作 A 裡的所有method,否則必須宣告自己為 abstract class。
- 不能直接 new abstract class,只能 new 其非 abstract class 的子類別。
1 | public abstract class AbstractExample { |