Thêm final
vào phương pháp tĩnh thực sự có thể tạo sự khác biệt. Xét đoạn mã sau:
class A {
public static void main(String[] args) {
System.out.println("A");
}
}
class B extends A {
public static void main(String[] args) {
System.out.println("B");
}
}
class C extends B {
}
public class Test {
public static void main(String[] args) {
C.main(args); // Will invoke B.main
}
}
Thêm final
-A.main
sẽ ngăn chặn tình cờ cất giấu A.main
. Nói cách khác, việc thêm final
vào A.main
không được phép đảm bảo rằng không được phép và do đó, C.main
do đó in "A"
trái ngược với ví dụ "B"
.
Tại sao chúng ta được phép có phương thức chính thức cuối cùng trong java?
Bên cạnh trường hợp góc trên, thêm final
đến một phương pháp tĩnh không làm cho nhiều sự khác biệt, vì vậy tôi không thấy một điểm lớn trong việc thêm một quy tắc cho không cho phép nó.
biết thêm thông tin có sẵn ở đây: Behaviour of final static method
Trừ khi bạn đang sử dụng phương pháp này 'main' cho bất cứ điều gì khác hơn là bắt đầu ứng dụng của bạn, có hoàn toàn không có lý do gì để làm cho nó' final'. –