abstract method 一定要在 abstract class裡面
abstract class裡面不一定要有abstract method
設計class時,知道該class應該要有哪些feature(method) 功能,但你還不確定確切該做什麼事情,或是這個功能之後會根據各種sub-class而有各自不同的實現。
abstract class Human{
public abstract void speak();
public void eat(){
System.out.println("Eat something~");
}
}
class Korean extends Human{
public void speak() {
System.out.println("Speak in Korean");
}
}
public class Demo {
public static void main(String[] args) {
Human korean = new Korean();
korean.speak(); // Speak in Korean
Human japanese = new Human() {
public void speak() {
System.out.println("Speak in Japanese");
}
};
japanese.speak(); // Speak in Japanese
}
上方程式部分
我定義了一個Human class
人類一定要吃,所以我明確寫了一個eat method
而這個人是哪一國人會說什麼語言?
這我不知道,所以寫上abstract關鍵字 - 第3行
定義一個Korean class extends Human 並重寫speak method - 第10~15行
使用anonymous inner class的方式,在new 物件的時候就直接重寫speak method - 第23~28行
anonymous inner class 只會建立使用一次性class,
不像class Korean可以在許多地方被重複使用(new 新的物件)。
當你確定這個class永遠不會在其他地方使用到的話,可以用這種方式速速創建並使用。