static
- ใช้กับ nested class, variable, method, block
- ไม่ต้อง initialize ตอนประกาศ
- เปลี่ยนค่าได้ (re-initialize)
- เข้าถึงสมาชิก static ของคลาสเดียวกันได้
- static method เรียก static member ได้อย่างเดียว
- ไม่สามารถสร้าง object ของ static class ได้
- static block ใช้ initialize static variables
final
- คีย์เวิร์ดจำกัด class, method, variable
- final class: ไม่ให้ extends
- final method: ไม่ให้ override
- final variable: ต้อง initialize ตอนประกาศ, ไม่ให้เปลี่ยนค่า
สรุปความแตกต่าง
| คุณสมบัติ | static | final |
|---|---|---|
| ประเภท | Modifier สำหรับ member/class | Keyword จำกัดการเปลี่ยนแปลง |
| Variable initialization | ไม่บังคับตอนประกาศ | บังคับตอนประกาศ |
| เปลี่ยนค่า Variable | ได้ | ไม่ได้ |
| Method | เป็นของ class ไม่ใช่ instance | ไม่ให้ override |
| Class | Nested static class (ไม่ใช่ top-level) | ไม่ให้ extend |