Java的世界裡,提供了兩種機制幫助定義類別的架構,一個是interface,一個是抽象類別。這兩種機制主要的差別在於,一個是使用實作的方式,一個是使用繼承的方式,去實現類別的功能。
抽象類別可以事先實作好方法要做的事,interface則只是定義好需要哪些方法,乍看之下抽象類別能重複使用程式碼,似乎更方便,但使用抽象類別會有一些缺點,所以還是鼓勵使用interface而不是抽象類別,原因有:
MultiFunctionDevice
繼承了Printable
和Scanable
,MultiFunctionPrinter
再實作MultiFunctionDevice
。// 定義兩個接口
interface Printable {
void print();
}
interface Scanable {
void scan();
}
// 定義一個接口繼承自兩個接口
interface MultiFunctionDevice extends Printable, Scanable {
void copy();
}
// 實現多重繼承的接口
public class MultiFunctionPrinter implements MultiFunctionDevice {
@Override
public void print() {
System.out.println("Printing...");
}
@Override
public void scan() {
System.out.println("Scanning...");
}
@Override
public void copy() {
System.out.println("Copying...");
}
public static void main(String[] args) {
MultiFunctionPrinter mfp = new MultiFunctionPrinter();
mfp.print();
mfp.scan();
mfp.copy();
}
}
今天說了為什麼使用interface比較好,但其實interface也是有一些缺點,明天再來談談有什麼缺點,可以怎麼優化~