Khá muộn ở đây nhưng tôi muốn thử tạo một định nghĩa chính xác: các hàm tĩnh là các hàm không hoặc không thể tham chiếu các thuộc tính / phương thức thể hiện của lớp chứa.
Trong một số ngôn ngữ, như C #, có thể có các trường tĩnh hoặc thuộc tính trong các lớp tĩnh, do đó không chính xác khi nói rằng chúng không được sử dụng cho trạng thái; một hàm tĩnh có thể sử dụng trạng thái tĩnh (toàn cầu).
Về cơ bản, nó tập trung vào: các hàm tĩnh, giống như mọi thứ tĩnh, rất hữu ích khi chúng luôn có sẵn mà không phụ thuộc vào các trường hợp không tĩnh.
Các hàm trợ giúp, giống như các hàm toán học, là một ví dụ điển hình, nhưng có các hàm khác.
Nếu lớp bạn tạo yêu cầu dữ liệu là bất biến, thì có thể tạo ra các hàm tĩnh có trong một thể hiện và truyền một thể hiện mới vì cá thể không thể (hoặc không nên) thay đổi. Ví dụ, các lớp chuỗi có thể có các hàm tĩnh nhận một chuỗi (hoặc 2 hoặc nhiều hơn) và trả lại một chuỗi mới.
Một lý do khác có thể là có một lớp giữ trạng thái toàn cầu hoặc dữ liệu nào đó. Có thể có các hàm tĩnh hoạt động với các thuộc tính tĩnh hoặc các trường trong lớp tĩnh đó.