2023-09-21|閱讀時間 ‧ 約 3 分鐘

abstract 關鍵字

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永遠不會在其他地方使用到的話,可以用這種方式速速創建並使用。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.