ใช่ เราสามารถประกาศ main() method เป็น final ใน Java ได้ คอมไพเลอร์ไม่โยน error ใดๆ
- ถ้าเราประกาศเมธอดใดๆ เป็น final โดยวาง final keyword เมธอดนั้นจะกลายเป็น final method
- การใช้งานหลักของ final method ใน Java คือ พวกมันไม่ถูก override
- เรา ไม่สามารถ override final methods ใน subclasses ได้
- ถ้าเราใช้ inheritance และต้องการเมธอดบางตัวไม่ถูก override ใน subclasses เราต้องทำให้เป็น final เพื่อป้องกัน subclasses override ได้
- เราสามารถเข้าถึง final methods ใน subclass ได้ แต่ไม่สามารถ override final methods ได้
ตัวอย่าง
class BaseClass {
public final void show(Object o) {
System.out.println("BaseClass method");
}
}
class DerivedClass extends BaseClass {
public void show(Integer i) {
System.out.println("DerivedClass method");
}
}
public class Test {
public static final void main(String[] args) { // declaring main() method with final keyword.
BaseClass b = new BaseClass();
DerivedClass d = new DerivedClass();
b.show(new Integer(0));
d.show(new Integer(0));
}
}
ผลลัพธ์
BaseClass method DerivedClass method