在父類別定義好大綱(也就是運算邏輯),
子類別只要實作method 就可以讓多個class共用相同的運算邏輯
參與者
1.Template 父類別
Template必須為abstract class,不能用interface宣告
因為在template內,負責主要邏輯運算的method 必須要是一個
final method
public abstract class Template{
public abstract void open();
public final void display(){
open();
open();
open();
}
}
sample裡的display method包含了運算邏輯,是一個實體的method,但
在裡面呼叫執行的是抽象 method,這部分的method一定要在子類別內被實做
2.MyDisplay 子類別
子類別繼承Template,並把abstract 部分實作出來
public class MyDisplay{
public void open(){
.....
}
}
3.Main主程式
Template a=new MyDisplay();
a.display();
主程式執行時,會用到的是包含運算邏輯的method
Abstract class與Interface的差別
1.只要class內有method宣告為abstract,則class就必須宣告為abstract
Interface內所有的method都必須是abstract
也就是說在abstract class內,還可包含有非abstract的method
如果是extend abstract method ,只要 實作abstract method即可
對於非abstract method可直接使用,若要改寫則要override
2.只要是abstract class就不能被直接new 出instance
3.Class一次只可以繼承(extends )一個父class
但可以實作(implement)多個class
亦可同時extends 與implement
沒有留言:
張貼留言